Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# 日期时间异常_C#_Asp.net - Fatal编程技术网

C# 日期时间异常

C# 日期时间异常,c#,asp.net,C#,Asp.net,我制作了一个注册页面,用户在其中输入个人详细信息以创建帐户。但我不断得到一个异常,我的应用程序和控制验证根本不工作 protected void btnSubmit_Click(object sender, EventArgs e) { Registration _m = new Registration(); DateTime dateOfBirth = DateTime.ParseExact(txtDOB.Text, "dd/MM/yyyy", null); lblM

我制作了一个注册页面,用户在其中输入个人详细信息以创建帐户。但我不断得到一个异常,我的应用程序和控制验证根本不工作

protected void btnSubmit_Click(object sender, EventArgs e)
{
    Registration _m = new Registration();
    DateTime dateOfBirth = DateTime.ParseExact(txtDOB.Text, "dd/MM/yyyy", null);
    lblMsg.Text = _m.Register(txtUser.Text, txtTitle.Text, txtPass.Text, 
    txtMidI.Text, txtSur.Text, txtCity.Text, txtPostCode.Text, txtxMobile.Text, 
    txtLandL.Text, txtEmail.Text, RBLMF.SelectedValue, dateOfBirth, 
    RBLYesNo.SelectedValue, txtSQ.Text, txtxAn.Text);
}
例外情况是:


使用“d/M/yyyy”更灵活,因为它允许用户输入一位数的月份和日期。

从字符串到日期的转换似乎失败了。由于您是从文本框中提取数据,这意味着理论上输入可以是任何内容,因此您应该始终验证它。看一看。我还没有测试过这段代码,但大致上您想要做的是更改

DateTime dateOfBirth = DateTime.ParseExact(txtDOB.Text, "dd/MM/yyyy", null);


您试图解析的日期时间字符串是什么?对于初学者,您应该使用调试器或stacktrace查找代码失败的确切位置,但在本例中,很可能是对
datetime.ParseExact
的单个调用。您尝试创建日期的字符串的格式不是预期的格式。您使用的字符串是什么?出生日期可以插入文本框dd/MM/yyyy
Chris
实际格式。。例如,
2014年11月05日
这就是我们所说的,您试图解析的日期值看起来是什么样的,请注意它是如何利用
out
参数的,如果您的用户键入的任何内容不在键入的精确掩码中,则调用ParseExact将始终导致异常。您应该尝试使用@DJKRAZE所指出的TryParseExact,并在您的文本框中添加一个日期类型的RangeValidator,这对
OP
有什么帮助呢?那么,当一天是两位数时会发生什么呢。。?op希望使用
dd
而不是
d
@DJKRAZE进行格式化,这有点帮助。掩码“d/M/yyyy”也接受“2014年11月30日”,但这应该由TryParseExact处理
DateTime dateOfBirth = DateTime.ParseExact(txtDOB.Text, "dd/MM/yyyy", null);
DateTime dateOfBirth;
if (DateTime.TryParseExact(txtDOB.Text, "dd/MM/yyyy", null, DateTimeStyles.None, out dateOfBirth)))
{
  //Do your logic in here
  //.....
}
else
{
  //Show a message to the user that they didn't enter a valid date
  //.....
}