0

我有一个文本框 - DateOfBirth 我按照以下步骤从验证数据到将其保存在数据库中。

第 1 步:当我提交文本时,我验证日期格式是否正确(dd/mm/yyyy):

string Pattern = @"^(0?[1-9]|[12][0-9]|3[01])[/](0?[1-9]|1[012])[/](19|20)\d\d";

第 2 步:如果格式正确,我将文本框的输入值转换为日期时间格式:

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);
DOB = DateTime.ParseExact(txtDOB.Value, "dd/mm/yyyy", theCultureInfo);

第 3 步:然后我将值发送到数据库并按原样保存在我的表中。

我在这里遇到了一个问题:
对于日期“04/04/2012”,一切正常。
但如果我提交日期“4/04/2012”或“04/4/2012”,则第 2 步会引发异常:

String was not recognized as a valid DateTime.

我该如何处理这个问题?

我应该跳过第 2 步并在数据库查询中进行转换吗???

4

1 回答 1

4

因为该方法希望您有两个位置的日期并且您只提供了一个值,所以要解决您的问题,请dParseExact格式中删除一个。

IFormatProvider theCultureInfo = new System.Globalization.CultureInfo("en-GB", true);
DOB = DateTime.ParseExact(txtDOB.Value, "d/M/yyyy", theCultureInfo);
于 2012-12-17T12:53:07.707 回答