我的.Net .exe用于读取文件并在sql DB中存储信息。 在开发系统中,我们在美国语言环境中使用默认设置和文件,并且工作正常。
我使用了相同的.exe并部署到我们的Prod服务器上,默认设置和文件都在英国语言环境中。
我使用了Datetime.Parse,它应该以本地系统的格式解析日期,即US MM / dd / yyyy和UK dd / MM / yyyy。
但是,在以英国格式解析日期时,它会给出例外情况,有人可以帮助我解决我在哪里做错了。
我还注意到一些奇怪的事情,当我将开发机器的默认设置更改为英国,然后编译.exe并部署相同的工作。
你能告诉我为什么会这样吗。
答案 0 :(得分:1)
您必须向DateTime.Parse()方法提供iformatprovider(即System.Globalization.CultureInfo的实例)。顺便说一句,我建议使用TryParse,或者如果你确切知道日期时间字符串是如何到达的,请使用TryParseExact,因为它们要快得多。
答案 1 :(得分:0)
最佳解决方案是在app.config中指定区域设置,覆盖计算机。
答案 2 :(得分:0)
很难说没有更多细节,但是应用服务器和 sql server可能运行的语言设置超出预期。即使您在应用程序服务器上正确设置了文化设置,sql server上的日期时间格式仍然不符合预期。