【问题标题】:C# DateTime parsing international culturesC# DateTime 解析国际文化
【发布时间】:2013-03-11 11:33:20
【问题描述】:

我正在尝试解析各种日期格式,天数、时间和年份组件是一致的,但星期几和月份取决于设备。这些是来自 iPad 的一些示例结果

Isn Mac 11 16:25:58 2013

Ahd Mac 10 18:34:41 2013

Sab Mac 09 18:44:34 2013

Jum Mac 08 16:57:33 2013


Fri Mar 8 16:49:46 2013

Thu Mar 7 12:34:47 2013

Sat Jan 19 12:21:58 2013

英文的解析很好,但马来西亚(马来)的解析不好

我正在使用它来调试它:

        var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);

        foreach (var culture in allCultures)
        {
            if (DateTime.TryParseExact("Isn Mac 11 16:25:58 2013", "ddd MMM d HH:mm:ss yyyy", culture, DateTimeStyles.None, out result))
                return;
        }

理想情况下,它可以处理这种格式的所有可能语言,而我不必编写特定于语言的代码

我尝试使用以下文化代码手动解析马来西亚日期: 小姐 ms-BN 女士-MY

有什么想法吗?

感谢您的宝贵时间

【问题讨论】:

  • 回读一下吧,我猜天数不是真的一致,如果它可以是 8 或 08,但是这很容易解决
  • 对于088,您可以使用对两者都适用的单个d
  • 那么你有什么尝试?您已经尝试过您的代码,但它无法使用d 解析,但可以使用dd?如果您输入808 的日期,dd 会失败吗?请详细说明您的尝试以及问题所在。
  • 我已经对其进行了一些更新,因为天数部分不是问题(感谢 Habib,无论哪种方式都可以)。它的第一部分,例如“Isn Mac”与“Fri Mar”

标签: c# parsing date internationalization cultureinfo


【解决方案1】:

这可能是马拉西亚文化的 CultureInfo 数据中的错误 - AbbreviatedDayNames 数组如下所示:

Ahad 
Isnin 
Sel 
Rabu 
Khamis 
Jumaat 
Sabtu 

您不会认为 Isn 不存在 - 它是 Isnin

比较一下,看DayNames

Ahad 
Isnin 
Selasa 
Rabu 
Khamis 
Jumaat 
Sabtu 

我是从以下地方挑选出来的:

System.Globalization.CultureInfo.GetCultureInfo("ms-MY").DateTimeFormat

作为一种解决方案,看看您是否可以使用全天名称 - 在您的示例中使用 Isnin 而不是 Isn,返回正确的 DateTime 对象。

【讨论】:

    【解决方案2】:

    我已经根据马来西亚文化测试了您的约会时间。显然您的字符串的日期名称不正确:

    var dt = new DateTime(2013,03,11,16,25,58);
    var currCult = CultureInfo.CreateSpecificCulture("ms-MY");
    var str = dt.ToString("ddd MMM d HH:mm:ss yyy", currCult);
    // ---> "Isnin Mac 11 16:25:58 2013"
    

    恕我直言Isn != Isnin,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      相关资源
      最近更新 更多