DateTimeFormat.AbbreviatedMonthNames 在月份名称的末尾添加一个点
DateTimeFormat.AbbreviatedMonthNames adding a dot at the end of month's name
昨晚我们将 Web 服务层从物理 Windows 2008 r2 迁移到虚拟 Windows 2012。
我们的日志中收到大量关于 DateTime 格式无效的事件,这很奇怪,因为我们仔细检查了我们的区域设置。
长话短说:
CultureInfo.GetCultureInfo("es-MX").DateTimeFormat.AbbreviatedMonthNames
输出(使用 LinqPad5):
- 烯.
- 二月。
- 3 月。
在我们新的 2012 env 和 2008 ouptus 上:
- 烯
- 二月
- 3月
我们的解析是这样的:
DateTime.Parse("18 ene 16",CultureInfo.GetCultureInfo("es-MX"))
虽然它创造了奇迹,但现在它抛出了
FormatException :
The string was not recognized as a valid DateTime. There is an unknown word starting at index 3.
.
同时
DateTime.Parse("18 ene. 16",CultureInfo.GetCultureInfo("es-MX"))
有效,但不是我们几个客户的预期输入。
在相同的运行时版本 (4.0.30319.42000) 上工作,仔细检查(再次)我们在两台服务器上的区域设置我还能寻找什么来解决这个问题(在放弃并用正则表达式替换破解它之前)?
谢谢。
遗憾的是,我在配置中找不到任何指向正确方向的内容。
以这样一个令人讨厌的黑客结束:
var cultura = CultureInfo.CreateSpecificCulture("es-MX");
if (cultura.DateTimeFormat.AbbreviatedMonthNames.First().EndsWith("."))
cultura.DateTimeFormat.AbbreviatedMonthNames = cultura.DateTimeFormat.AbbreviatedMonthNames.Select(c => c.Substring(0, c.Length > 1 ? c.Length - 1 : 0)).ToArray();
并在解析中使用了该区域性。
昨晚我们将 Web 服务层从物理 Windows 2008 r2 迁移到虚拟 Windows 2012。
我们的日志中收到大量关于 DateTime 格式无效的事件,这很奇怪,因为我们仔细检查了我们的区域设置。
长话短说:
CultureInfo.GetCultureInfo("es-MX").DateTimeFormat.AbbreviatedMonthNames
输出(使用 LinqPad5):
- 烯.
- 二月。
- 3 月。
在我们新的 2012 env 和 2008 ouptus 上:
- 烯
- 二月
- 3月
我们的解析是这样的:
DateTime.Parse("18 ene 16",CultureInfo.GetCultureInfo("es-MX"))
虽然它创造了奇迹,但现在它抛出了
FormatException :
The string was not recognized as a valid DateTime. There is an unknown word starting at index 3.
.
同时
DateTime.Parse("18 ene. 16",CultureInfo.GetCultureInfo("es-MX"))
有效,但不是我们几个客户的预期输入。
在相同的运行时版本 (4.0.30319.42000) 上工作,仔细检查(再次)我们在两台服务器上的区域设置我还能寻找什么来解决这个问题(在放弃并用正则表达式替换破解它之前)?
谢谢。
遗憾的是,我在配置中找不到任何指向正确方向的内容。
以这样一个令人讨厌的黑客结束:
var cultura = CultureInfo.CreateSpecificCulture("es-MX");
if (cultura.DateTimeFormat.AbbreviatedMonthNames.First().EndsWith("."))
cultura.DateTimeFormat.AbbreviatedMonthNames = cultura.DateTimeFormat.AbbreviatedMonthNames.Select(c => c.Substring(0, c.Length > 1 ? c.Length - 1 : 0)).ToArray();
并在解析中使用了该区域性。