public List<TBL_Yhqc> GetYhqcAlls(int userId, string title,DateTime? date,DateTime? date1)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(SQL_SELECT_YHQC);            if (userId != 0)
                sb.Append(" where ").Append(CAME_YHQC_YHQCUSERID);
            if (title != null)
                sb.Append(" and ").Append(CAME_YHQC_YHQCTITLE);
            if (date != null && date1 != null)
                sb.Append(" and ").Append(CAME_YHQC_YHQCRQ1);            SqlParameter[] parm = new SqlParameter[]
            {
                new SqlParameter(PARM_YHQC_YHQCUSERID,SqlDbType.Int),
                new SqlParameter(PARM_YHQC_YHQCTITLE,SqlDbType.NVarChar,32),
                new SqlParameter("@date",SqlDbType.SmallDateTime),
                new SqlParameter("@date1",SqlDbType.SmallDateTime)
            };            parm[0].Value = userId;
            parm[1].Value = title ?? "";
            parm[2].Value = date;
            parm[3].Value = date1;
}判断 string 类型的用 ?? ""; 判断datetime类型的该怎样写?

解决方案 »

  1.   

    使用正则判断/// <summary>
            /// 是否为日期型字符串
            /// </summary>
            /// <param name="StrSource">日期字符串(2008-05-08)</param>
            /// <returns></returns>
            public static bool IsDate(string StrSource)
            {
                return Regex.IsMatch(StrSource, @"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$");
            }        /// <summary>
            /// 是否为时间型字符串
            /// </summary>
            /// <param name="source">时间字符串(15:00:00)</param>
            /// <returns></returns>
            public static bool IsTime(string StrSource)
            {
                return Regex.IsMatch(StrSource, @"^((20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$");
            }        /// <summary>
            /// 是否为日期+时间型字符串
            /// </summary>
            /// <param name="source"></param>
            /// <returns></returns>
            public static bool IsDateTime(string StrSource)
            {
                return Regex.IsMatch(StrSource, @"^(((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d)$ ");
            }
      

  2.   

                DateTime tt = date ?? new DateTime();
      

  3.   

    我晕 ,  lz可不可以给我解释下title ?? ""; 什么意思?头一次见这种语法。
      

  4.   


    如果 title 为 null 则为它赋值 ""。
      

  5.   


    判断过以后把参数给他?我调用方法的时候给它传一个 null值。
      

  6.   

     谢谢。
      DateTime? dt=null;
                DateTime? d = dt ?? DateTime.Now;
                Response.Write(d);
      

  7.   

    应该是 这个吧
    DateTime? dt=null;
      DateTime? d = dt ?? DateTime.Now;
      Response.Write(d);
      

  8.   

    用个try{}catch{}都可以实现了。
    try
    {
        将得到的时间数据,转换为时间格式。看是否有错误。如果有就跳到catch里面去。如果没有,就执行后面的代码
    }
    catch
    {
        data1 =DateTime.Now();
    }
      

  9.   

    使用try catch等着出错,还不如学富士康跳楼