尝试保存出生日期的空日期时出错

时间:2011-06-28 16:49:37

标签: c# .net winforms validation datetime

我正在尝试验证两个出生日期文本框字段。如果该成员未输入这两个框,则会弹出一条错误消息,如“请输入有效的日期格式”

尝试保存而不输入文本框值时,它在Datetime DV显示错误,如此。

  

字符串未被识别为有效的DateTime。

private void btnCTimetablessave_Click(object sender, EventArgs e)
{
    string dob = tbStartDate.Text;
    DateTime dv;
    if (!DateTime.TryParse(dob, out dv))
    {

        MessageBox.Show("pls enter a valid  start date");
        return;
    }

    string format1 = dv.ToString("yyyy-MM-dd");
    string dob2 = tbEndDate.Text;
    DateTime dt2;
    if (!DateTime.TryParse(dob2, out dt2))
    {
        MessageBox.Show("pls enter valid end date");
        return;
    }

    string format2 = dt2.ToString("yyyy-MM-dd");

仍在datetime Dv

显示错误
  

“字符串未被识别为有效的DateTime”;

3 个答案:

答案 0 :(得分:2)

显然,tbStartDate.Text不包含有效日期。至少,根据您目前的环境设置。

本地化可能是一个问题。这里有一个很好的答案:String was not recognized as a valid DateTime " format dd/MM/yyyy"

<强>更新

您可能希望使用TryParse

,而不是使用ParseExact
DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);

这样,您可以指定您期望的输入格式。

答案 1 :(得分:1)

date参数的dbtype是什么?您必须使用与您的参数类型相同的对象设置值。

答案 2 :(得分:0)

甚至比“TryParse”和“ParseExact”更好的是“TryParseExact”。 TryParseExact的一个重载需要一个格式字符串的字符串数组。因此,您可以在接受的输入上获得更大的灵活性。此外,使用DateTimeStyles参数,您可以在要解析的字符串中的空白区域中指定其他灵活性。