c# DateTime解析国际文化

本文关键字:文化 DateTime | 更新日期: 2023-09-27 18:03:14

我试图解析各种日期格式,日数,时间和年组件是一致的,但星期和月的一天是设备相关的。以下是一些来自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-BNmy

任何想法?

感谢您的宝贵时间

c# DateTime解析国际文化

这可能是马来西亚文化的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对象。

我用马来西亚文化测试了你的约会时间。显然你的字符串有不正确的日名:

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"

Imho Isn != Isnin