为什么不同计算机或操作系统上的相同文化的日期格式不同?

时间:2015-10-08 18:50:00

标签: c# .net windows date-format cultureinfo

我在托管使用C#.net MVC开发的网站时遇到日期格式化问题。

在我的开发机器(操作系统:Windows 7,.net Framework 4.5 )中,西班牙语 - 巴拿马(es-PA)的日期格式为 mm / dd / yy ,在服务器计算机(操作系统:Windows 8,.net Framework 4.5 )中,它为同一文化提供 d / m / yy 格式。

我使用简单的控制台应用程序检查了它。

public static void Main()
{
    DateTime dt = DateTime.Now;
    Thread.CurrentThread.CurrentCulture = new CultureInfo("es-PA");

    Console.WriteLine(dt.ToString("d"));

    Console.ReadLine();
}

开发机器上的输出是:10/08/2015

服务器计算机上的输出是:8/10/15

我还通过更改语言和区域进行了检查,但两种机器的默认格式都不同。

为什么不同机器的格式在同一文化中有所不同? 对此有什么解决方案吗?

2 个答案:

答案 0 :(得分:4)

  

为什么同一文化的不同机器格式不同?

因为格式会随着时间的推移而在不同的操作系统版本和补丁/修补程序中更新。 .NET正在从操作系统中获取格式(我相信,无论如何),因此操作系统是差异的来源 - 正如您在区域设置中看到的那样。

  

有没有解决方案?

检查两台计算机是否都是最新的Windows Update,并可能检查可用的任何修补程序。否则,您可以随时手动更新要更改的那个,但显然这远非理想。

Windows 8可能只有比Windows 7更多的最新信息,因为不会将由Windows更新解决:(

答案 1 :(得分:-2)

文化有多种可接受的格式。 线程从线程执行的帐户获取文化(从而格式化)。

例如,如果您在您的开发计算机上运行IIS express(IIS express使用ASP.NET用户进程的Windows用户帐户),您可以更改为另一种有效格式,对于Windows中的相同文化,现在这将是您的Web应用程序的输出格式。

很难为非问题提供解决方案。它仍然是相同的日期,并且实际上正确地显示了设置文化。

但是,如果您想强制使用格式,则可以通过设置CurrentCulture.DateTimeFormat.ShortDatePattern

来设置格式