【问题标题】:C# DateTime conversion same culture on different machinesC# DateTime 在不同机器上转换相同的文化
【发布时间】:2013-07-25 13:43:23
【问题描述】:

如果我从我的测试意大利机器上运行这个控制台应用程序:

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-It /

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

【问题讨论】:

  • 是否都在同一个 Windows 平台上运行?也许旧版本有不同的时间分隔符。
  • 我的意大利机器是windows 7,美国机器是运行windows server 2012的虚拟天蓝色机器

标签: datetime cultureinfo


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    无论如何,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: /
    

    【讨论】:

      【解决方案3】:

      替换

          ci.DateTimeFormat.TimeSeparator
      

          DateTimeFormatInfo.CurrentInfo.TimeSeparator;
      

      【讨论】:

      • ci.DateTimeFormat.TimeSeparator 为“it-IT”提供时间分隔符,这是在 ToString 方法中请求的,因为直接提供了 CultureInfo。如果未提供,则当前文化信息的信息将是相关的,获得该信息的一种方法就是您所指出的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2013-02-17
      • 2010-11-28
      相关资源
      最近更新 更多