【发布时间】:2010-05-11 13:48:07
【问题描述】:
我正在尝试解析一个包含毫秒的字符串,如下所示:
string s = "11.05.2010 15:03:08.7718687"; // culture: de-CH DateTime d = DateTime.Parse(s); // works
但是,例如在 de-DE 语言环境下,小数点分隔符是逗号(不是点)。于是例子就变成了:
string s = "11.05.2010 15:03:08,7718687"; // culture: de-DE (note the comma) DateTime d = DateTime.Parse(s); // throws a FormatException
DateTime.Parse(s) 现在应该抛出 FormatException 对我来说很奇怪,因为它应该使用 CultureInfo.CurrentCulture 进行解析。即使将 CurrentCulture 作为参数明确传递也无济于事。有谁知道为什么这不起作用?解析不考虑 NumberFormatInfo.NumberDecimalSeparator 吗?
【问题讨论】:
-
在亚秒级时间格式标准化之前的日子(ISO 8601:2004 做到了),那么分隔符是什么并不重要。因此,标准通常不涵盖应该用作亚秒级小数点的内容。目前尚不清楚数字格式信息是否正确,但不一定有更好的选择。我们最近一直在努力解决这个问题(在完全不同的背景下——不是 Windows 平台),但还没有为它想出一个好的系统。再加上向后(内)兼容性让我们有些头疼。
标签: c# parsing datetime cultureinfo