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/yyyyChris
实际格式。。例如,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
//.....
}