Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串转换为DateTime格式的解析等于数据库中的DateTime字段_C#_Asp.net - Fatal编程技术网

C# 将字符串转换为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

我正在尝试将YYYY/MM/DD的日期值从文本框转换为datetime,当该值正确时可以,但当我尝试输入不正确的数据以检查数据库时,错误返回字符串未被识别为有效的datetime

这是我的密码:

  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/yyyy

Jon,修复名称TryParse->tryparseexact你能简单解释一下或者给我一个示例代码吗?@Dhenn:具体做什么?我已经给了你我能给你的所有代码,真的。。。我不知道你想如何处理无法解析值的情况。@JonSkeet谢谢,我用tryparse试过了,效果很好。伟大的Jon,修复名称TryParse->tryparseexact你能简单解释一下或者给我一个示例代码来做吗?@Dhenn:具体做什么?我已经给了你我能给你的所有代码,真的。。。我不知道你想如何处理无法解析值的情况。@JonSkeet谢谢,我用tryparse试过了,效果很好。伟大的