2012-03-31 126 views
0

我想将日期值的YYYY/MM/DD从文本框转换为日期时间,当值正确时它可以,但是当我尝试输入一个不正确的数据来检查数据库,错误返回为String未被识别为有效的DateTime。DateTime.Parse将字符串转换为日期时间格式等于数据库中的日期时间字段

这里是我的代码:

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     string format = "YYYY-MM-DD HH:MM:SS"; 
     DateTime birthday = DateTime.Parse(txtBday.Text); 
     DataSet ds = new DataSet(); 
     ds = (newService.checkAccount()); 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
      foreach (DataRow dRow in ds.Tables[0].Rows) 
      { 
       string accountNo = dRow["ACCTNO"].ToString(); 
       DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString()); 
       if (accountNo == txtAccountNo.Text.ToString() && birthDate == birthday) 
       { 
        lblMessage.Text = "<br>Account Number Exist. You may now proceed with the registration<br><br>"; 
        HttpCookie lmsCookie = new HttpCookie("id"); 
        lmsCookie.Value = txtAccountNo.Text; 
        Response.Cookies.Add(lmsCookie); 
        Response.Redirect("Step2.aspx"); 
       } 
       else 
       { 
        Image2.Visible = false; 
        lblMessage.Text = "<br>Please check your information and try again." + "<br>Be sure you are entering the correct information.For further assistance, call (+632) 404-2790.<br><br>"; 
       } 
      } 
     } 
    } 

例如,我将进入数据将在数据库匹配,程序会以其他方式进行,如果我要输入不带任何的匹配数据数据库中的现有记录,程序将触发错误,字符串未被识别为有效的日期时间。

回答

3

当你解析可能会失败,而不是这是有原因的其他不是一个错误,:

DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString()) 

(它抛出,你见过一个例外),使用DateTime.TryParse

DateTime birthDate; 
if (DateTime.TryParse(dRow["DATEOFBIRTH"].ToString(), out birthDate)) 
{ 
    // Success case 
} 
else 
{ 
    // Handle error case 
} 

我注意到,你不是使用你的format变量,顺便说一下。如果你知道是什么格式将是(和你的问题不同意你的代码,顺便说一句),这将是更好地使用TryParseExact

if (DateTime.TryParseExact(dRow["DATEOFBIRTH"].ToString(), "YYYY/MM/dd", 
          CultureInfo.InvariantCulture, DateTimeStyles.None, 
          out birthDate)) 
... 
+0

乔恩,固定名称的TryParse - > TryParseExact – asktomsk 2012-03-31 07:34:44

+0

@asktomsk:卫生署:)完成。 – 2012-03-31 07:36:24

+0

你能简单解释一下还是给我一个示例代码来做这件事? – Dhenn 2012-03-31 07:38:39

0

肯定地说,它会抛出一个异常时,不支持的格式是试图转换成日期时间。所以,在转换之前,您应该使用DateTime.TryParse方法解析它。

0

Sovel,

步骤1:

this._checkInOutDTO.NgayCham = DateTime.Parse(this.DGVDuLieuVaoRa.Rows [num15] .Cells [1] .Value.ToString()); // this._checkInOutDTO.NgayCham = Convert.ToDateTime(this.DGVDuLieuVaoRa.Rows [num15] .Cells [1] .Value.ToString());

步骤2: 格式:DD/MM/YYYY

相关问题