帮助将字符串日期转换为DateTime

我在带有提交按钮的文本框上使用Ajax控件工具包日历扩展器。 简单。

调试器显示文本正确传输到调用方法,但此行转换代码将文本框文本转换为1/1/0001 12:00:00 AM。 文本框日期为:2011年4月15日

DateTime txtMyDate = Convert.ToDateTime(txtDate.Text); 

我究竟做错了什么?

您应该使用DateTime.Parse()方法:

 DateTime txtMyDate = DateTime.Parse(txtDate.Text); 

如前所述,您还可以使用类似的语法使用DateTime.ParseExact() ,如下所示:

 DateTime txtMyDate = DateTime.ParseExact(txtDate.Text, [string format], [IFormatProvider provider]); 

Parse vs ParseExact:

Parse() – 假设数据是有效的,并尽力使其适合类型,当开发人员有机会调用常识时,这些事情看起来有点模糊。

ParseExact() – 只允许指定的确切格式,并将抛出任何变化。

Parse与ParseExact的来源

有很多方法可以将文本转换为DateTime,请尝试以下方法:

 DateTime txtMyDate = DateTime.ParseExact(txtDate.Text, "M/d/yyyy", CultureInfo.InvariantCulture); 

编辑:忘记了文化信息参数

使用DateTime.ParseExact从格式化日期字符串中提取日期值:

 DateTime dateValue = DateTime.ParseExact(stringDateValue, "M/d/yyyy", CultureInfo.InvariantCulture); 

尝试

 DateTime instance = DateTime.Parse( txtDate.Text ) ; 

它在某种程度上可以接受它的灵活性。 或者, DateTime.ParseExact()将使您可以控制转换。