.net - 文化 es-DO 的默认 DateTimeFormat.ShortDatePattern 不正确

标签 .net datetime globalization cultureinfo

我住在多米尼加共和国,多年来一直在使用 .NET Framework 开发应用程序。通常,我会为这种特定文化创建本地化应用程序 (es-DO),使用内置的 .NET 全局化机制对我很有帮助。对于 Web 应用程序,我通常在 Web.Config 中定义全局文化:

<globalization culture="es-DO" uiCulture="es-DO" />

但在 DateTimeFormatShortDatePattern 中存在一个问题,这种文化让我和其他开发人员感到困惑。由于未知原因,默认的 ShortDatePattern 格式是 d/M/yy 而实际上这个国家/地区使用的常规范式是 dd/MM/yyyydd-MM-yyyy 与大多数其他讲西类牙语的国家(顺便说一句,配置正确)一样。

我创建了一个小型控制台应用程序来更好地说明:

Spanish-speaking cultures ShortDatePattern

我已经在多台 PC 上确认了相同的行为,甚至将我的 Web 应用程序发布到 Windows Azure 等托管服务提供商。

我一直在寻找关于这个主题的信息,但它似乎是一个关于这种特定(我可能会补充说不太流行)文化的非常本地化的问题,因此很难找到任何文档。

基本上,我有两个问题:

  • 他们怎么知道正确的文化格式?他们做了什么研究?这是否记录在我可以查看的地方?并且,
  • 是否可以解决这个问题而不必在我的应用程序中的任何地方指定所需的格式?

编辑

这已被报告为 Microsoft Connect 中的错误和 Visual Studio Forums .

最佳答案

How do they know the correct culture format? They did any kind of study? Is this documented somewhere that I can look at?

Is it possible to fix this issue without having to specify the desired format everywhere in my application/s?

  • 当然,只需更改当前线程的文化:

    var currentCulture = Thread.CurrentThread.CurrentCulture;
    if (currentCulture.Name == "es-DO")
    {
        var culture = (CultureInfo) currentCulture.Clone();
        culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
        Thread.CurrentThread.CurrentCulture = culture;
    }
    
  • 在网络应用程序中,您可以在 Application_BeginRequest 中执行此操作您的 global.asax.cs 文件,它将贯穿您的整个应用程序。

关于.net - 文化 es-DO 的默认 DateTimeFormat.ShortDatePattern 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18749374/

相关文章:

.net - WinCE 6.0 R3下.Net CF框架代码异常

c# - 在 .NET/C# 中是否有类似 Ruby 中的 Or-Equals 的东西?

java - 如何在java中找到当前时间和一天中的特定时间之间的差异

java - Instant 和 ZonedDateTime 之间的兼容性

c# - 实现 Azure Table 的 ITableEntity 接口(interface)以支持嵌套对象和自定义属性类型

c# - 如何在 .ForEach() 方法中使用 continue 语句

sql-server - SSIS 将时间戳列派生为日期和时间列

.net - 处理文化中受支持的日期时间值的有限范围时,最佳实践是什么?

javascript - 如何不使用 toLocaleString 显示秒数

Mysql 禁用国际字符串比较