2014-04-25 98 views
0

我试图解析TimeString以看起来像:解析日期时间在C#

11/Apr/2014:00:00:12 +0200 

我的代码看起来像

DateTime.ParseExact("11/Apr/2014:00:00:12 +0200", "dd/MMM/yyyy:HH:mm:ss zzz", null) 

我看着the MSDN,它看起来对我好,但我没有线索为什么我总是得到一个FormatException。

+2

更安全,请检查该http://dotnetfiddle.net/zIv6Sv。它似乎有效。 – Christos

+4

您可能想要传递特定的CultureInfo参数,因为'Apr'不适用于很多地区 – CodingIntrigue

+0

由于您的字符串包含偏移量,因此您最好将其解析为DateTimeOffset而不是DateTime。 –

回答

4

您应该将InvariantCulture作为格式提供程序添加。

var d = DateTime.ParseExact("11/Apr/2014:00:00:12 +0200", "dd/MMM/yyyy:HH:mm:ss zzz", CultureInfo.InvariantCulture); 

你的格式字符串考虑到/:字符,将解决在当前的文化中定义的,就像HH将意味着“小时”,在您的格式特定格式的分隔符。请参阅this page以查看time separatordate separator是预定义的,并将被文化特定值替换。

有可能escape the special characters但我认为,从长远来看,你的代码将与InvariantCulture

+0

它的工作原理。非常感谢 :) – Oliver