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,但它以日期作为月份。我是这么想的。相同的代码可以在其他电脑上运行。我是否需要检查我的日期时间格式或日期设置之类的内容。
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方法完美解析。它没那么聪明。