【问题标题】:Why did the es-MX date format change from Windows 7 to Windows 10?为什么 es-MX 日期格式从 Windows 7 更改为 Windows 10?
【发布时间】:2016-09-29 19:20:15
【问题描述】:

这是一个单元测试:

[TestMethod]
public void Check_how_es_MX_displays_MMM()
{
    var originalCulture = Thread.CurrentThread.CurrentCulture;
    try
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("es-MX");
        var result = new DateTime(2015, 8, 6).ToString("MMM");
        Assert.AreEqual("ago", result);
    }
    finally
    {
        Thread.CurrentThread.CurrentCulture = originalCulture;
    }
}

当我在 Windows 7 上运行它时,它通过了。当我在 Windows 10 机器上运行它时它失败了:

Assert.AreEqual failed. Expected:<ago>. Actual:<ago.>.

我正在两台计算机上针对 .NET 4.5.1 进行构建。

“MMM”格式字符串如何在 Windows 7 中返回“ago”和“ago”。在寡妇 10 中?我原以为它总是会给我一个 3 个字母的月份代码。

编辑

更多阅读表明使用 MMM 可以从以下位置查找缩写的月份名称:System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames

编辑 2

another question 处理(我认为)同样的问题。

【问题讨论】:

  • MMM not 不会生成 3 个字母的月份名称,它会生成缩写的月份名称。文化偏好确实改变,甚至比软件开发更快。您需要更新您的测试。
  • @HansPassant - 是的,我意识到了这一点。实际上那个测试只是一个例子,真正的测试告诉我,当我们迁移到 Windows 10 时,使用这种格式实现我们的功能将不起作用。我们的要求是一个 3 字符缩写的西班牙月份(打印在一个固定宽度的字段上的标签)。

标签: c# localization formatting


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2021-10-08
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多