当连字符用作时间格式中的分隔符时,DateTime.Parse 失败
本文关键字:分隔符 DateTime 失败 Parse 连字符 时间 格式 | 更新日期: 2023-09-27 18:35:15
先决条件:在 Windows 区域设置中,选择"英语(美国)格式"。在"其他设置"中,通过将连字符指定为分隔符来自定义时间格式(如"HH-mm-ss")。
进行这些更改后,以下代码将失败,并显示 FormatException (字符串未被识别为有效的日期时间)。
DateTime.Parse(DateTime.Now.ToString());
在 .NET 4.0 和 4.5 中重现。有没有办法避免这个问题?
您可以使用
DateTime.ParseExact 方法。例如:
DateTime.ParseExact(DateTime.Now.ToString(),"HH-mm-ss",null);
好吧,也许这是显而易见的,但不是:
DateTime.Parse(DateTime.Now.ToString())
只需这样做:
DateTime.Now
字符串格式可用于许多事情,但并非所有格式在转换为字符串并再次解析回DateTime
时都能保证完全往返。 您可能已经注意到,因为时间分隔符被弄乱了,但这也是因为您使用的是默认字符串格式。 如果你改用这个,即使有奇怪的区域设置,它也会起作用:
DateTime.Parse(DateTime.Now.ToString("o"))
但是,在现实世界中几乎没有一个很好的理由这样做。
您可能需要阅读有关 DateTime
的标准和自定义格式字符串的信息。