Different DateTimeFormat for the same culture in different machines

我与影子孤独终老i 提交于 2019-12-01 20:56:30

Actually, I was trying to use the code above in the wrong place in the Global.asax file.

I managed to override the ShortDatePattern for the entire aplication by putting the code in the Application_BeginRequest method:

protected void Application_BeginRequest()
{
    CultureInfo info = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.ToString());
    info.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
    System.Threading.Thread.CurrentThread.CurrentCulture = info;
}

The solution is to always create CultureInfo object using the constructor:

CultureInfo(string name, bool useUserOverride)

and passing false for useUserOverride parameter.

From MSDN:

useUserOverride: A Boolean that denotes whether to use the user-selected culture settings (true) or the default culture settings (false).

Basically using false force the CultureInfo to use the default settings (separators, ...) from the specified culture instead of using the one defined in the system.

Consider also that different operating system can produce different results in some (small) cases. Running the code below (.NET 4.5):

CultureInfo ci = new CultureInfo("it-IT", false);

String date = DateTime.Now.ToString(ci);
Console.WriteLine(date);
Console.WriteLine("Time Separator: " + ci.DateTimeFormat.TimeSeparator);
Console.WriteLine("Date Separaotr: " + ci.DateTimeFormat.DateSeparator);
Console.ReadKey();

On Win 7 produce:

29/10/2013 14:12:33
Time Separator: :
Date Separaotr: /

while running it on Win 8 produce:

29/10/2013 15.08.43
Time Separator: .
Date Separaotr: /

in control panel go to regional and language options,select portuges(brazil), in formats go to customize this format, check the date configuration

.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!