2013-03-11 65 views
2

我试图解析各种日期格式,日期编号,时间和年份组件是一致的,但星期几和月份是依赖于设备的。这些都是一些例子的结果,从ipad公司未来解析国际文化的C#日期时间

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; 
     } 

理想它会处理这种格式的所有可能的语言,我将不必编写语言特定的代码

我试过手动解析马来西亚日期以下ing文化代码: ms ms-BN ms-MY

任何想法?

感谢您的时间

+0

刚看完回来,我猜的日数是不是真的一致的,如果它可以是8或08,但那么可以很容易地在 – JeremyBeadle 2013-03-11 11:34:50

+2

上为'08'或'8'工作,你可以使用单个'd'来适应这两种情况。 – Habib 2013-03-11 11:35:36

+0

那么你有什么尝试?你已经试过你的代码,它不能用'd'解析,但用'dd'工作?如果你在'8'或'08'的日期通过'dd',它会失败吗?更多的内容,你已经尝试和什么问题是请。 – 2013-03-11 11:37:19

回答

2

这可能是在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对象。

1

我测试了你的日期时间与马来西亚文化。显然,你的字符串中有不正确的日期名称:!

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