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

本文关键字:一文 格式 日期 计算机 操作系统 为什么 | 更新日期: 2023-09-27 18:16:53

在使用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

我也通过更改语言和区域检查,但在两台机器的默认格式是不同的。

为什么相同文化在不同机器上的格式不同?有什么解决办法吗?

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

为什么相同文化在不同机器上的格式不同?

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

有什么解决办法吗?

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

有可能Windows 8只是比Windows 7有更多的最新信息,在某种程度上将通过Windows更新:(

)解决

文化有多种可接受的格式。线程从线程作为执行对象的帐户获取区域性(以及格式)。

例如,如果你在你的开发机器上运行IIS express (IIS express使用windows用户帐户ASP。. NET worker进程),您可以更改为另一种有效的格式,对于windows中的相同区域性,现在这将是您的web应用程序的输出格式。

对于一个不存在的问题,很难给出一个解决方案。它仍然是相同的日期,并且实际上正确地显示了设置的区域性。

但是,如果你想强制一个格式,你应该能够通过设置CurrentCulture.DateTimeFormat.ShortDatePattern

来做到这一点,例如