求判断2007/12/11这种格式日期的有效性即合法性

解决方案 »

  1.   

    建议用正则表达式:
    ^((((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-))$
      

  2.   

    hehe,最笨的方法就是try一下转换,转换成功的就是合法的,失败的就是非法的DateTime.TryParseExact 方法
      

  3.   

    DateTime.TryParseExact   具体怎么用啊能不能给个实例偶看看
      

  4.   


    try
    {
       DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
    }
    catch(Exception ex)
    {
      throw ex;
    }
      

  5.   

    我这个日期字段是datagridview的一个单元,用了7楼的方法还是会出来那个系统错误
      

  6.   

    if (dgrdvYlqb.CurrentCell.ColumnIndex == 2 || dgrdvYlqb.CurrentCell.ColumnIndex == 3
                    || dgrdvYlqb.CurrentCell.ColumnIndex == 4 || dgrdvYlqb.CurrentCell.ColumnIndex == 5)
                {
                    try
                    {
                        string str = dgrdvYlqb.CurrentCell.Value.ToString().Substring(0, dgrdvYlqb.CurrentCell.Value.ToString().Length-8);
                        try
                        {
                            DateTime dtime = DateTime.ParseExact(str, "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
                        }
                        catch                    
                        {
                            MessageBox.Show("错误");                    }                    DateTime.Parse(str);
                    }
                    catch
                    {
                        MessageBox.Show("10桁日期型(2007/12/11)を入力して下さい");
                        dgrdvYlqb.CurrentCell.Style.ForeColor = Color.Red;
                        submitFlag = false;
                    }
     
                }
                if (submitFlag)
                {
                    this.btnSubmit.Enabled = true;
                }
      

  7.   

    DateTime   dtime   =   DateTime.ParseExact(str,   "yyyy/MM/dd ",   System.Globalization.DateTimeFormatInfo.InvariantInfo); 这个代码已经将str 转换为 datetime了 (如果符合日期格式的话) 所以 你没有必要再用DateTime.Parse(str); 
    你debug跟一下 看看你的str是否是满足 yyyy/MM/dd的串
      

  8.   

    DateTime.Parse(str);   这句我注释掉了
    我明白了如果STR不是 yyyy/MM/dd就会报错但是我想报自己的MessageBox.Show( "错误 ");  而不是系统的错误,就是要防止用户输入·2007/12/·    这样的东西。                                   
      

  9.   

    完全可以啊try
    {
       DateTime dtime = DateTime.ParseExact("2007/09/19", "yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
    }
    catch
    {
      MessageBox.Show("请按照'1999/01/01'格式输入","提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
      

  10.   

    会不会是因为我放在这个方法里面的缘故阿。CellEndEdit(object sender, DataGridViewCellEventArgs e)就是不行呀。会出来那张图片的错误
      

  11.   

    DateTime.TryParse 方法注意:此方法在 .NET Framework 2.0 版中是新增的。 将日期和时间的指定字符串表示转换成其等效的 DateTime。 命名空间:System
    程序集:mscorlib(在 mscorlib.dll 中)public static bool TryParse (
    string s,
    out DateTime result
    )参数
    s
    包含要转换的日期和时间的字符串。 result
    当此方法返回时,如果转换成功,则包含与 s 中包含的日期和时间等效的 DateTime 值;如果转换失败,则为 MinValue。如果 s 参数为 空引用(在 Visual Basic 中为 Nothing),或者不包含日期和时间的有效字符串表示形式,则转换失败。该参数未经初始化即被传递。 返回值
    如果 s 参数成功转换,则为 true;否则为 false。====================
    偶只是来看天使的...顺便摘抄一点儿地狱指南里的东东...
      

  12.   

    DataError
    CellValidating
    事件分别测试一下DateTime.TryParse