当我的服务器的区域语言设置为英语(英国)时,为什么Thread.CurrentThread.CurrentCulture.Name显示“en-US”

时间:2011-05-19 09:38:47

标签: c# asp.net datetime

我有一个Web应用程序,它在不同的点上使用户输入日期并向用户显示日期。在调试时(以及站点在我们的测试和登台服务器上运行时),日期格式以dd / mm / yyyy格式显示(使用DateTime.ToShortDateString()时)。这些服务器(以及我的开发环境将“英语(英国)”设置为windows区域选项下的语言。到目前为止一切都很好。但是,在实时服务器日期显示格式为mm / dd / yyyy即使现场直播服务器仍然将语言设置为“English(United Kindgom)”。我见过this question,它解释了如何以特定格式解析日期,我已经知道如何以所需的字符串格式获取日期( DateTime.ToString("dd/MM/yyyy"))但是我想知道实时服务器上的其他操作系统设置导致了这种差异? 我也见过this question,但它似乎没有回答我的问题。

一些其他信息:关于开发,测试和登台环境 System.Threading.Thread.CurrentThread.CurrentUICulture.Name = “EN-US” System.Threading.Thread.CurrentThread.CurrentCulture.Name = “EN-GB”

在现场环境中 System.Threading.Thread.CurrentThread.CurrentUICulture.Name = “EN-US” System.Threading.Thread.CurrentThread.CurrentCulture.Name = “EN-US”

4 个答案:

答案 0 :(得分:7)

您是否已查看globalization的{​​{1}}部分?

你可以像这样声明地设置它:

web.config

请参阅:http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

答案 1 :(得分:3)

区域设置适用于每个用户 - 因此您需要确保为任何运行应用程序的用户更改区域设置,例如:网络服务。

看起来很多人都在搜索方法(谷歌“IIS更改区域设置”)。看起来大多数人通过将设置入侵到注册表的适当部分(HKEY_USERS\IUSR-SID\Control Panel\International下)来实现它

答案 2 :(得分:1)

您当然可以在Begin Request事件中覆盖它。

但真正的根本原因是Windows没有本地化为英语。我们获得美国英语:没有资源本地化到en-GB,因此这个设置避免了很多失败的en-GB资源查找,立即回到en-US。

答案 3 :(得分:-3)

尝试检查实时服务器上使用的区域设置。请查看以下链接了解更多详情

http://www.java.com/en/download/help/locale.xml

您可能还需要检查浏览器中列出的语言优先级。

问候