DateTime.ToString("d", cultureInfo) IIS 和控制台应用程序的输出不同

DateTime.ToString("d", cultureInfo) output differs between IIS and console app

我正在使用 DateTime.Now.ToString("d", new CultureInfo("nl-NL"))

在本地 IIS web 应用程序中,输出是正确的:

22-7-2016

在控制台应用程序中,框架选择 international/culture-invariant 日期表示法:

2016-07-22

这是在同一台机器上,具有完全相同的代码。我已经放置了一个断点,检查了所有输入,甚至在那个点尝试了 运行 立即 window 中的命令。在任何情况下,控制台应用程序都会出错。

谁能解释造成这种差异的原因?

我在 VS 2012 中使用 .NET 4.5 在控制台和 Web 应用程序中获得了相同的结果。

你能试试这个吗?

yourDateTime.ToString("dd-MM-yyyy", new System.Globalization.CultureInfo("nl-NL"));

IIS 和您的控制台应用程序 运行 在不同的用户帐户下。如果您自定义了日期格式(例如使用区域控制面板),CultureInfo 格式化程序将仅在您的帐户中使用该自定义。

您可以创建一个忽略用户设置的 CultureInfo

new CultureInfo("nl-NL", useUserOverride: false)

您重置了您帐户的区域设置:运行 > intl.cpl > Select 下拉菜单中的 NL 语言环境 > 其他设置 > 重置。