日期时间解析不工作 C#

Hot*_*tud -1 .net c# datetime parsing

我正在尝试使用代码从 Excel 读取日期

String ss = (String)w.Cells[2 + i, 4].Value2;
dRow[3] = DateTime.Parse(ss);
Run Code Online (Sandbox Code Playgroud)

代码可以工作ss = "12/11/2015"但给出错误

字符串未被识别为有效的日期时间

什么时候ss = "13/11/2015"

它给出错误,因为月份不能是 12,但它以日期作为月份。我是这么想的。相同的代码可以在其他电脑上运行。我是否需要检查我的日期时间格式或日期设置之类的内容。

Son*_*nül 5

DateTime.Parse默认情况下CurrentCulture使用您设置的标准日期和时间格式。

看起来您的CurrentCulture格式为短日期格式,并且由于公历中MM/dd/yyyy没有月份(可能用作您的),因此您得到。13CalendarCurrentCultureFormatExcetion

您可以使用DateTime.ParseExact方法来指定您的格式,如下所示:

dRow[3] = DateTime.ParseExact("13/11/2015", "dd/MM/yyyy", 
                              CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

如果您将其作为输入并希望将其解析为DateTime,则必须知道它具有哪种格式。除此之外,它还可能产生模棱两可的场景。

例如; 01/02/2015应该解析为什么?2月1日还是1月2日?

不应该假设您提供的每个字符串都可以使用DateTime.Parse方法完美解析。它没那么聪明。