DateTimeFormatInfo.MonthDayPattern 在 Windows Server 2012 中已更

本文关键字:2012 Server MonthDayPattern Windows DateTimeFormatInfo | 更新日期: 2023-09-27 17:55:23

在澳大利亚,一个客户一直在输入"1/5"作为五月第一天的快捷方式。我们刚刚从Windows Server 2008迁移到Windows Server 2012。

在 LinqPad 中使用以下代码:

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-au", false);
System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthDayPattern.Dump();
DateTime.Parse("1/5").Dump();

在 Windows Server 2008 上:

日嘎�

2016/1/05 12:00:00

在 Windows Server 2012 R2 上:

唰��

2016/5/01 12:00:00

问题:

  1. 为什么月日模式发生了变化?澳大利亚人总是先有一天,然后是月份
  2. 可以在Windows Server UI中的什么位置设置?UI 仅公开长格式和短格式,不公开月和日格式
  3. 鉴于整个系统中可能会发生DateTime.Parse,我如何以最少的更改来解决应用程序中的问题(例如。模型绑定、验证等)

DateTimeFormatInfo.MonthDayPattern 在 Windows Server 2012 中已更

我可以在Windows Server 2012上复制该问题。 如果添加...

System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern.Dump();  

你会看到它返回...

日/月/年

只有MonthDayPattern似乎不正确。 这可能是一个错误。 我会在 https://connect.microsoft.com/上记录问题。

同时,您可以简单地设置月日模式。

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-au", false);
System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern.Dump();
System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthDayPattern.Dump();
DateTime.Parse("1/5").Dump();
System.Globalization.DateTimeFormatInfo.CurrentInfo.MonthDayPattern = "d MMMM";
DateTime.Parse("1/5").Dump();

在 Windows Server 2012 R2 上:

日/月/年

唰��

2016/5/01 12:00:00

2016/1/05 12:00:00