1

先决条件:在 Windows 区域设置中选择英语(美国)格式。在附加设置中,通过指定连字符作为分隔符来自定义时间格式(如“HH-mm-ss”)。

进行这些更改后,以下代码将失败并出现 FormatException(String 未被识别为有效的 DateTime。):

DateTime.Parse(DateTime.Now.ToString());

在 .NET 4.0 和 4.5 中重现。有没有办法避免这个问题?

4

2 回答 2

5

您可以使用 DateTime.ParseExact 方法。例如:

DateTime.ParseExact(DateTime.Now.ToString(),"HH-mm-ss",null);
于 2013-10-12T11:44:13.923 回答
0

好吧,也许这很明显,但不是:

DateTime.Parse(DateTime.Now.ToString())

只需这样做:

DateTime.Now

字符串格式可用于许多事情,但并非所有格式都保证在转换为字符串并再次解析回 a 时完全往返DateTime。您可能已经特别注意到了,因为时间分隔符被弄乱了,但这也是因为您使用的是默认字符串格式。如果您改为使用它,它会起作用,即使使用奇怪的区域设置:

DateTime.Parse(DateTime.Now.ToString("o"))

但是,在现实世界中几乎没有充分的理由这样做。

可能了解. _DateTime

于 2013-10-13T06:17:40.300 回答