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 语言环境 > 其他设置 > 重置。
我正在使用 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 语言环境 > 其他设置 > 重置。