C# 一个DateTime解析很好,但另一个没有';T

C# 一个DateTime解析很好,但另一个没有';T,c#,asp.net,datetime,C#,Asp.net,Datetime,我有一个ASP网站,从两个字段中读取两个日期 日期是使用JavaScript生成的,我需要读取的两个日期中的一个通过了,而另一个没有。即使它们是完全一样的方式 正如您在我的即时窗口中看到的: datepicker_start.Value "03/10/2016" datepicker_end.Value "03/23/2016" 第一个解析很好,第二个解析不好: DateTime start = DateTime.Parse(datepicker_start.Value); DateTime

我有一个ASP网站,从两个字段中读取两个日期

日期是使用JavaScript生成的,我需要读取的两个日期中的一个通过了,而另一个没有。即使它们是完全一样的方式

正如您在我的即时窗口中看到的:

datepicker_start.Value
"03/10/2016"

datepicker_end.Value
"03/23/2016"
第一个解析很好,第二个解析不好:

DateTime start = DateTime.Parse(datepicker_start.Value);
DateTime end = DateTime.Parse(datepicker_end.Value);
它在结束日期引发FormatException:

DateTime.Parse(datepicker_end.Value)
引发了类型为的异常

System.FormatException:字符串未被识别为有效的 日期时间


我无法理解为什么会发生这种情况。如果您需要的不是我已经提供的内容,请告诉我,因为这确实令人费解。

DateTime。Parse
使用当前区域性设置的标准日期和时间格式

可能您的区域设置将
dd/MM/yyyy
作为标准格式,并且由于没有第23个月,您的第二行将抛出
FormatException

我建议使用自定义格式,如

DateTime end = DateTime.ParseExact(datepicker_end.Value,
                                   "MM/dd/yyyy",
                                   CultureInfo.InvariantCulture);

比如,;如果调试代码,您的
开始时间将是10月3日,而不是3月10日。

日期时间。解析使用当前区域性设置的标准日期和时间格式

可能您的区域设置将
dd/MM/yyyy
作为标准格式,并且由于没有第23个月,您的第二行将抛出
FormatException

我建议使用自定义格式,如

DateTime end = DateTime.ParseExact(datepicker_end.Value,
                                   "MM/dd/yyyy",
                                   CultureInfo.InvariantCulture);

比如,;如果您调试代码,您的
开始时间将是10月3日,而不是3月10日。

这是因为它试图解析dd/MM/yyyy,您的第二个值的格式是MM/dd/yyyyyy当解析“03/10/2016”时,是10月还是3月?应该是哪一个?因为它试图解析dd/MM/yyyy,所以第二个值的格式是MM/dd/yyyyy当解析“03/10/2016”时,是10月还是3月?应该是哪一个?是的,你是对的。奇怪的是,在我的代码中的其他地方,这不是一个问题,我也这么做了。但是我想我也会在这些地方强制执行它。@Vipar可能除了这个字符串之外,没有任何字符串在您的代码中的月份部分大于
12
。是的,您是对的。奇怪的是,在我的代码中的其他地方,这不是一个问题,我也这么做了。但是我想我也会在这些地方强制执行它。@Vipar可能除了这个字符串之外,没有任何字符串在您的代码中的月份部分大于
12