Datetime C#日期时间转换不同机器上的相同区域性

Datetime C#日期时间转换不同机器上的相同区域性,datetime,cultureinfo,Datetime,Cultureinfo,如果我从测试机器上运行此控制台应用程序: 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

如果我从测试机器上运行此控制台应用程序:

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/

但如果我从我的美国服务器运行此代码:

2013-07-25 15.40时间:it。日期:是吗/

为什么时间部分使用不同的格式分隔符?意大利语的正确答案必须是:

替换

    ci.DateTimeFormat.TimeSeparator


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

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

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

CultureInfo ci=新的CultureInfo(“it”,false)

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

在任何情况下,Win8和Win7之间都会发生更改。运行以下代码(.NET 4.5):

在Win 7上制作:

29/10/2013 14:12:33
Time Separator: :
Date Separaotr: /
在Win 8上运行时,生产:

29/10/2013 15.08.43
Time Separator: .
Date Separaotr: /

都在同一个Windows平台上运行吗?可能旧版本有不同的时间分隔符。我的意大利机器是windows 7,美国机器是运行windows server 2012ci.DateTimeFormat.TimeSeparator的虚拟azure机器。TimeSeparator为“it it it”提供时间分隔符,这是ToString方法中请求的,因为CultureInfo是直接提供的。如果没有提供,那么当前文化信息的信息将是相关的,而获得这些信息的一种方法就是您所指出的。
29/10/2013 14:12:33
Time Separator: :
Date Separaotr: /
29/10/2013 15.08.43
Time Separator: .
Date Separaotr: /