c#错误地格式化了日期时间

本文关键字:日期 时间 格式化 错误 | 更新日期: 2023-09-27 18:14:44

我用Visual Studio 2012编写了一个web应用程序,目标是。net 4.5,从历史上看,它是通过构建解决方案,压缩然后ftp到生产服务器来手动部署的。

我正在寻找自动化这个部署,所以我有一个构建服务器托管詹金斯CI,我用它来构建源使用MSBuild.exe,然后运行NUnit测试。

当我在本地运行构建脚本时,它工作得很好,所有的测试都通过了。然而,当我在构建服务器上运行脚本时(没有安装Visual Studio,但有SDK),构建是成功的,但是一些单元测试失败。

我已经检查了失败,结果发现有一些奇怪的问题发生,例如日期格式不工作。

myRequest.Date = new DateTime(1970, 2, 1)
...
myRequest.Date.ToString("dd-MM-yyyy"));

在我的本地机器上,这可以正常工作并将日期格式化为01-02-1970。但是在构建机器上,测试失败了,因为日期格式为02-01-1970

c#错误地格式化了日期时间

您已经显式指定了日-月-年的顺序,所以我不相信您得到的是您所说的结果。为例。下面所有的培养都会得到相同的结果,"01-02-1970":

string usDate = date.ToString("dd-MM-yyyy", new CultureInfo("en-US"));
string deDate = date.ToString("dd-MM-yyyy", new CultureInfo("de-DE"));
string gbDate = date.ToString("dd-MM-yyyy", new CultureInfo("en-GB"));

改变区域设置或CurrentCulture对我来说有点"货物崇拜编程"的味道。相反,我建议您在导致问题的构建机器上进行调试,并准确地跟踪发生的事情—您确定没有在代码中查看错误的位置吗?

我必须更改构建服务器上的区域设置,使其与我的本地机器相同。