如果我从我的测试意大利机器运行这个控制台应用程序:
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-07-25 15:40时间:it-IT:日期:it-It /
但如果我从我的美国服务器运行此代码:
2013-07-25 15.40时间:它 - IT。日期:it-It /
为什么时间部分有不同的格式分隔符?意大利语的正确必须是:
答案 0 :(得分:2)
您自己发现意大利语的时间分隔符数据在Windows版本之间发生了变化(冒号是更新版本)。这是预期的,因为我们正在改进我们的数据。如果您因为在机器之间传输数据而发现这种情况,那么您应该使用标准的不变格式(如ISO 8601),这些格式将不受数据更改的影响。
答案 1 :(得分:1)
我遇到了这个问题。 有时我认为问题是因为有用户覆盖。
我建议使用:
加载CultureInfoCultureInfo ci = new CultureInfo(“it-IT”,false);
指定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: /
答案 2 :(得分:-1)
替换
ci.DateTimeFormat.TimeSeparator
与
DateTimeFormatInfo.CurrentInfo.TimeSeparator;