我在托管使用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
我还通过更改语言和区域进行了检查,但两种机器的默认格式都不同。
为什么不同机器的格式在同一文化中有所不同? 对此有什么解决方案吗?
答案 0 :(得分:4)
为什么同一文化的不同机器格式不同?
因为格式会随着时间的推移而在不同的操作系统版本和补丁/修补程序中更新。 .NET正在从操作系统中获取格式(我相信,无论如何),因此操作系统是差异的来源 - 正如您在区域设置中看到的那样。
有没有解决方案?
检查两台计算机是否都是最新的Windows Update,并可能检查可用的任何修补程序。否则,您可以随时手动更新要更改的那个,但显然这远非理想。
Windows 8可能只有比Windows 7更多的最新信息,因为不会将由Windows更新解决:(
答案 1 :(得分:-2)
文化有多种可接受的格式。 线程从线程执行的帐户获取文化(从而格式化)。
例如,如果您在您的开发计算机上运行IIS express(IIS express使用ASP.NET用户进程的Windows用户帐户),您可以更改为另一种有效格式,对于Windows中的相同文化,现在这将是您的Web应用程序的输出格式。
很难为非问题提供解决方案。它仍然是相同的日期,并且实际上正确地显示了设置文化。
但是,如果您想强制使用格式,则可以通过设置CurrentCulture.DateTimeFormat.ShortDatePattern