先决条件: 在Windows区域设置中,选择英语(美国)格式。在附加设置中通过将连字符指定为分隔符(如“HH-mm-ss”)来自定义时间格式。
在这些更改之后,以下代码因FormatException而失败( String未被识别为有效的DateTime。):
DateTime.Parse(DateTime.Now.ToString());
在.NET 4.0和4.5中重现。 有没有办法避免这个问题?
答案 0 :(得分:3)
您可以使用DateTime.ParseExact方法。 例如:
DateTime.ParseExact(DateTime.Now.ToString(),"HH-mm-ss",null);
答案 1 :(得分:0)
好吧也许这很明显,但不是:
DateTime.Parse(DateTime.Now.ToString())
这样做:
DateTime.Now
字符串格式可用于许多事情,但并非所有格式都保证在转换为字符串时完全往返并再次解析回DateTime
。您可能已经特别注意到因为时间分隔符已被删除,但这也是因为您使用的是默认字符串格式。如果您使用了它,它就会起作用,即使是奇怪的区域设置:
DateTime.Parse(DateTime.Now.ToString("o"))
但是,在现实世界中,几乎没有充分的理由这样做。
您可能希望了解DateTime
的{{3}}和Standard格式字符串。