如果我运行从我的测试机器意大利这个控制台应用程序:
static void Main(string[] args)
{
String date = DateTime.Now.ToString("yyyy-MM-dd HH:mm", new CultureInfo("it-IT"));
Console.WriteLine(date);
Console.ReadKey();
CultureInfo ci = new CultureInfo("it-IT");
Console.WriteLine("Time: " + ci.Name + " " + ci.DateTimeFormat.TimeSeparator);
Console.WriteLine("Date: " + ci.Name + " " + ci.DateTimeFormat.DateSeparator);
Console.ReadKey();
}
显示:
2013年7月25日15:40时间:它-IT:日期:它-IT /
但如果我从我的美国服务器上运行的代码:
2013年7月25日15.40时间:它-IT。 日期:它-IT /
为什么不同的格式分离器,用于在部分时间? 正确的意大利必须是:
你发现自己的Windows版本之间改变了意大利时间分隔符的数据(冒号是更先进的最新版本)。 这是我们正在改进我们的数据的预期。 如果你发现,因为机器之间传输数据的这一点,你应该使用标准不变的格式(如ISO 8601),将幸免于数据的变化。
我正好碰上了这个问题。 有时我认为这个问题是因为有一个用户覆盖。
我建议使用加载的CultureInfo:
CultureInfo的CI =新的CultureInfo( “IT-IT”,假);
指定false作为useUserOverride
参数力绕过任何用户设置。
在任何情况下,有Win8的和Win7之间的变化。 运行下面的代码(.NET 4.5):
CultureInfo ci = new CultureInfo("it-IT", false);
String date = DateTime.Now.ToString(ci);
Console.WriteLine(date);
Console.WriteLine("Time Separator: " + ci.DateTimeFormat.TimeSeparator);
Console.WriteLine("Date Separaotr: " + ci.DateTimeFormat.DateSeparator);
Console.ReadKey();
在Win 7产品:
29/10/2013 14:12:33
Time Separator: :
Date Separaotr: /
而它运行在Win 8产品:
29/10/2013 15.08.43
Time Separator: .
Date Separaotr: /
更换
ci.DateTimeFormat.TimeSeparator
同
DateTimeFormatInfo.CurrentInfo.TimeSeparator;