【发布时间】:2011-07-29 04:04:03
【问题描述】:
客户端使用我们的应用程序从我们的服务器下载文件后,该应用程序对从服务器下来的日期字符串执行ParseExact,格式为:yyyy/mm/dd HH:mm:ss。
经过一番困惑后,我在一些日志中注意到客户端系统上的日期是19/7/2554。事实证明这是泰国的有效时间,Windows 默认为佛教时代时间系统,即 2554 年。
我的解析是使用不变的文化完成的,我怀疑这可能是问题所在,但我认为文化是指您尝试解析的格式?
我收到的异常消息是:字符串未被识别为有效的DateTime,因为星期几不正确
【问题讨论】:
-
您的格式似乎根本不包括星期几。你能举一个你试图解析的字符串和正在解析的代码的例子吗?
-
您确实在指定格式列表吗?
-
啊,我的坏人,我搞砸了。原来还有一段我什至不知道的代码正在运行。仅使用来自日志文件的异常消息进行调试非常困难。原来这是一个 DateTime.Parse 错误,而不是 parseexact。我能够通过将我的 PC 的区域更改为泰国来复制该问题,并准确查看它的死机。
-
我相信不变文化不应该给你带来问题,这是我认为正确的解析方式,这样无论不同文化的具体格式如何,你的代码都能正常工作。如果 InvariantCulture 不适合您,我会很感激了解您的问题,因为我自己正在为我的项目使用 Invariant Culture。