在我的Application_BeginRequest MVC项目中的global.asax.cs ()方法中,有代码:
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(EnCultureKey);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(EnCultureKey);
Thread.CurrentThread.CurrentCulture.DateTimeFormat = new CultureInfo(EnGBCultureKey).DateTimeFormat;变量是
private const string EnCultureKey = "en-US";
private const string EnGBCultureKey = "en-GB";在dev环境中,所有日期都是DD/MM/YYYY格式,但在测试环境中它们是MM/DD/YYYY格式。
你能告诉我这种差异的原因是什么吗?
更新:
发布于 2011-08-14 18:06:01
如果您确实希望覆盖所有页面的这些设置(而不是给用户一个选择),那么标准的方法是设置 in web.config:
<globalization uiCulture="en" culture="en-GB" />如果要使用代码,MSDN页面还将指示您重写InitializeCulture()。
InitializeCulture()发生得很早,但我怀疑Application_BeginRequest发生得更早,其影响被覆盖。
发布于 2011-08-14 17:00:53
尝试在Application_Start的global.asax方法上使用该代码,这将确保每次启动应用程序时,区域性信息都设置为您的规范。
例如,确保您使用了正确的格式时间来显示日期:
DateTime dt = DateTime.Now; Console.WriteLine(dt.ToString("d"));
发布于 2011-08-14 18:27:25
啊,我明白了,对不起。
我认为这是因为在这种情况下,您更改的是单个线程的区域性,而不是应用程序的所有线程。
将代码放在应用程序中的每个线程执行的位置,例如页面加载。
https://stackoverflow.com/questions/7058111
复制相似问题