C# 将字符串转换为DateTime格式的解析等于数据库中的DateTime字段
我正在尝试将YYYY/MM/DD的日期值从文本框转换为datetime,当该值正确时可以,但当我尝试输入不正确的数据以检查数据库时,错误返回字符串未被识别为有效的datetime 这是我的密码:C# 将字符串转换为DateTime格式的解析等于数据库中的DateTime字段,c#,asp.net,C#,Asp.net,我正在尝试将YYYY/MM/DD的日期值从文本框转换为datetime,当该值正确时可以,但当我尝试输入不正确的数据以检查数据库时,错误返回字符串未被识别为有效的datetime 这是我的密码: protected void btnSubmit_Click(object sender, EventArgs e) { string format = "YYYY-MM-DD HH:MM:SS"; DateTime birthday = DateTime.P
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>";
}
}
}
}
protectedvoid btnSubmit\u单击(对象发送方,事件参数e)
{
字符串格式=“YYYY-MM-DD HH:MM:SS”;
DateTime生日=DateTime.Parse(txtBday.Text);
数据集ds=新数据集();
ds=(newService.checkAccount());
如果(ds.Tables[0].Rows.Count>0)
{
foreach(ds.Tables[0].行中的DataRow dRow)
{
字符串accountNo=dRow[“ACCTNO”].ToString();
DateTime birthDate=DateTime.Parse(dRow[“DATEOFBIRTH”].ToString());
if(accountNo==txtAccountNo.Text.ToString()&&birthDate==birthday)
{
lblMessage.Text=“
账号已存在。您现在可以继续注册
”;
HttpCookie lmsCookie=新的HttpCookie(“id”);
lmsCookie.Value=txtAccountNo.Text;
响应.Cookies.添加(lmsCookie);
重定向(“Step2.aspx”);
}
其他的
{
图像2.可见=假;
lblMessage.Text=“
请检查您的信息并重试。”+“
确保输入的信息正确。如需进一步帮助,请致电(+632)404-2790.
”;
}
}
}
}
例如,我将在数据库中输入一个匹配的数据,否则程序将继续。如果我要输入一个与数据库中任何现有记录不匹配的数据,程序将触发一个错误,字符串未被识别为有效的日期时间。当解析可能由于错误以外的原因而失败时,与此相反:
DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString())
(如您所见,它会引发异常),请使用:
顺便说一下,我注意到您没有使用格式
变量。如果您知道格式(顺便说一句,您的问题与您的代码不一致),最好使用TryParseExact
:
if (DateTime.TryParseExact(dRow["DATEOFBIRTH"].ToString(), "YYYY/MM/dd",
CultureInfo.InvariantCulture, DateTimeStyles.None,
out birthDate))
...
当解析可能因错误以外的原因而失败时,而不是:
DateTime birthDate = DateTime.Parse(dRow["DATEOFBIRTH"].ToString())
(如您所见,它会引发异常),请使用:
顺便说一下,我注意到您没有使用格式
变量。如果您知道格式(顺便说一句,您的问题与您的代码不一致),最好使用TryParseExact
:
if (DateTime.TryParseExact(dRow["DATEOFBIRTH"].ToString(), "YYYY/MM/dd",
CultureInfo.InvariantCulture, DateTimeStyles.None,
out birthDate))
...
当然,当尝试将不支持的格式转换为datetime时,它将抛出异常。因此,在转换之前,您应该使用方法对其进行解析。当尝试将不支持的格式转换为日期时间时,它肯定会引发异常。因此,在转换之前,您应该使用方法解析它。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: 格式:年月日 步骤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/yyyyJon,修复名称TryParse->tryparseexact你能简单解释一下或者给我一个示例代码吗?@Dhenn:具体做什么?我已经给了你我能给你的所有代码,真的。。。我不知道你想如何处理无法解析值的情况。@JonSkeet谢谢,我用tryparse试过了,效果很好。伟大的Jon,修复名称TryParse->tryparseexact你能简单解释一下或者给我一个示例代码来做吗?@Dhenn:具体做什么?我已经给了你我能给你的所有代码,真的。。。我不知道你想如何处理无法解析值的情况。@JonSkeet谢谢,我用tryparse试过了,效果很好。伟大的