1

我的 .Net .exe 用于读取文件并将信息存储在 sql DB 中。在开发系统上,我们在美国语言环境中有默认设置和文件,一切正常。

我使用相同的 .exe 并部署到我们的 Prod 服务器上,其中默认设置和文件位于英国语言环境中。

我使用了 Datetime.Parse,它应该以本地系统的格式解析日期,即美国 MM/dd/yyyy 和英国 dd/MM/yyyy。

但是,在以英国格式解析日期时,它给出了一个例外,有人可以帮我找出我在哪里做错了。

我还注意到一些奇怪的事情,当我将 dev machine 的默认设置更改为 UK 然后编译 .exe 并部署它时它工作。

您能否也让我知道它为什么起作用。

4

3 回答 3

1

您必须为您的 DateTime.Parse() 方法提供一个 iformatprovider(即 System.Globalization.CultureInfo 的一个实例)。顺便说一句,我建议使用 TryParse,或者如果您确切知道日期时间字符串是如何到达的,请使用 TryParseExact,因为它们要快得多。

于 2009-03-01T17:08:03.927 回答
0

最好的解决方案是在 app.config 中指定区域设置,覆盖机器的。

于 2009-03-01T17:13:20.543 回答
0

很难说没有更多细节,但也许应用程序服务器sql 服务器运行在另一种语言设置上,而不是您预期的。即使您在应用程序服务器上正确设置了文化设置,sql server 上的日期时间格式仍然不如预期。

于 2009-03-01T17:39:24.133 回答