C#错误地格式化DateTime

时间:2013-05-22 12:44:24

标签: c# datetime formatting

我有一个使用Visual Studio 2012编写的Web应用程序,目标是.Net 4.5,并且历史上已经通过构建解决方案手动部署,压缩然后ftp到生产服务器上。

我希望自动化这个部署,所以我有一个构建服务器来托管Jenkins 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

2 个答案:

答案 0 :(得分:0)

您明确指定了订单日 - 月 - 年,所以我不相信您会得到您说的结果。例如。所有以下文化都会得到相同的结果,“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“货物崇拜节目”给我。相反,我建议你在导致问题的构建机器上进行调试,并准确地追踪正在发生的事情 - 你确定你没有在代码中查找错误的位置吗?

答案 1 :(得分:0)

我必须将构建服务器上的区域设置更改为与本地计算机相同。