为什么在不同的计算机或操作系统上,同一文化的日期格式不同?
本文关键字:一文 格式 日期 计算机 操作系统 为什么 | 更新日期: 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