1

If i run this console app from my test italian machine:

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();
    }

displays:

2013-07-25 15:40 Time: it-IT : Date: it-It /

but if I run this code from my usa server:

2013-07-25 15.40 Time: it-IT . Date: it-It /

Why different format separator for the time part? The correct one for italian must be :

4

3 回答 3

2

您自己发现意大利语时间分隔符的数据在 Windows 版本之间发生了变化(冒号是更新的版本)。这是意料之中的,因为我们正在改进我们的数据。如果您因为在机器之间传输数据而发现此问题,您应该使用不受数据更改影响的标准不变格式(如 ISO 8601)。

于 2013-09-24T18:19:29.087 回答
1

我刚遇到这个问题。有时我认为问题是因为存在用户覆盖。

我建议使用以下方法加载 CultureInfo:

CultureInfo ci = new CultureInfo("it-IT", false);

指定 false 作为useUserOverride参数 force 以绕过任何用户设置。

无论如何,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: /
于 2013-10-29T14:13:01.750 回答
-1

代替

    ci.DateTimeFormat.TimeSeparator

    DateTimeFormatInfo.CurrentInfo.TimeSeparator;
于 2013-08-14T16:46:46.343 回答