如何将en-US日期更改为en.net的en-GB?

rob*_*rob 21 c# asp.net iis datetime-format

在开发者机器上(cassini)

new DateTime(2012,3,14).ToString("d")
Run Code Online (Sandbox Code Playgroud)

结果是

14/03/2012
Run Code Online (Sandbox Code Playgroud)

这是正确的,但当部署到完整的IIS服务器时,结果是

03/14/2012
Run Code Online (Sandbox Code Playgroud)

服务器在控制面板/区域语言中设置为所有英语/英国/ GB,命令提示符中的运行日期返回dd/MM/YYYY格式.

该站点已设置为两者uiCulture="en-GB",culture="en-GB"并且这些站点显示在web.config全球化标记中.

我可以通过添加强制文化来解决这个问题

new DateTime(2012,3,14).ToString("d", new CultureInfo("en-GB"));
Run Code Online (Sandbox Code Playgroud)

但我真的想知道什么是错误地设置格式.

CultureInfo.CurrentCulture.Name, CultureInfo.CurrentUICulture.Name
Run Code Online (Sandbox Code Playgroud)

都归来了 en-US


  • en-US :( M/d/yyyy 例如3/14/2012)
  • en-GB :( dd/MM/yyyy 例如14/03/2012)

web.config中的实际值

 <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-GB" culture="en-GB" />
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 28

我设法通过将其放入web.config来使其工作

<globalization culture="en-GB"/>
Run Code Online (Sandbox Code Playgroud)


Ric*_*ard 5

在你的web.config添加中

<globalization culture='auto' uiCulture='auto' />
Run Code Online (Sandbox Code Playgroud)

然后,假设浏览器已正确配置为传递首选区域设置,则处理请求的工作线程将正确设置其CurrentCultureCurrentUICulture设置。

DateTime任何与语言环境相关的操作(包括format之类的操作d)都将使用客户端的首选项。

MSDN 上 web.config 的全球化元素:https://msdn.microsoft.com/en-us/library/ydkak5b9(v=vs.71 ).aspx