我不知道我在看什么......为什么会产生异常“字符串未被识别为有效的DateTime。”?
string dt = "7/28/2018 2:48:32 PM";
try
{
DateTime Test = DateTime.Parse(dt);
}
catch { }
在我评论之前,我已经多次介绍了我的代码,并将上面的内容替换为测试。我分配给dt的值实际上是在我的程序中分配的值。我最初使用的是:
if (DateTime.TryParse(dt, out DateTime Timestamp))
{ ... }
并不重要,但我使用的是Visual Studio 2017和.Net 4.6.2。
答案 0 :(得分:3)
DateTime.Parse()
会尝试猜测给定日期的格式。如果您确定日期始终采用特定格式,请使用ParseExact()
:
string dt = "7/28/2018 2:48:32 PM";
try
{
DateTime Test = DateTime.ParseExact(dt, "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
}
请注意,h(也可以使用hh)代替HH,因为它是12小时格式而HH代表24小时格式
答案 1 :(得分:1)
DateTime.Parse
对文化很敏感。默认情况下,它使用CultureInfo.CurrentCulture
来获取正确的日期时间格式。如果需要使用不同的区域性来解析字符串,则需要使用带有IFormatProvider
参数的Parse重载。
示例,在不变文化中(对持久性有用):
var dt = DateTime.Parse("07/31/2017 16:15:26", CultureInfo.InvariantCulture);
Console.Write(dt.ToString(CultureInfo.InvariantCulture)); // 07/31/2017 16:15:26
答案 2 :(得分:0)
问题出现在Visual Studio 2017中。重新安装,现在原始代码按预期工作。