为什么相同文化在不同计算机或 OS 上的日期格式不同?

Why is the date format different for the same culture on different computers or OS?

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

在我的开发机器中(OS:Windows 7, .net Framework 4.5) 西班牙-巴拿马 (es-PA) 的日期格式是mm/dd/yy 并且在服务器机器中(OS: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

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

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

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

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

非问题很难给出解决方案。还是同一个日期,居然正确显示了设定的文化。

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

等方式来实现

Why format is different in different machine for same culture?

因为格式会随着时间的推移而更新,在不同的 OS 版本和 patches/hotfixes 中。 .NET 正在从 OS 获取格式(我相信,无论如何),所以 OS 是差异的来源 - 正如您在区域设置中看到的那样。

Is there any solution for this?

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

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