7

我正在尝试解析一个包含毫秒的字符串,如下所示:

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 吗?

4

1 回答 1

4

DateTimeFormatInfo 适用于格式化/解析日期,而不是 NumberFormatInfo。DateTimeFormatInfo 没有定义可以被不同文化重载的“秒/毫秒”分隔符。

标准日期和时间格式字符串都没有显示毫秒,除了往返,它似乎对文化不敏感。所以你不应该遇到这种格式的字符串,除非你自己的代码正在生成它。如果您知道您的代码将生成该格式的日期,您可以提供一个自定义格式字符串,该字符串使用逗号作为秒和毫秒之间的分隔符。

于 2010-05-11T14:08:45.197 回答