解决从字符串解析DateTime的麻烦

Chu*_*ron 3 c# datetime parsing gmt

我目前正在尝试解析从每隔几分钟从Web下载的xml获取的字符串.字符串看起来像这样:

Thu Jul 12 08:39:56 GMT+0100 2012
Run Code Online (Sandbox Code Playgroud)

起初我只是做了一个string.split并在时间(GMT+0100 2012)后取出所有内容并在日期之后插入2012.

这很有效,直到日期变为:

Thu Jul 12 08:39:56 GMT+0000 2012
Run Code Online (Sandbox Code Playgroud)

因此,我想动态地传递GMT +,因为他们在c#中将该字符串发送给我.

任何意见,将不胜感激.

Ode*_*ded 6

您可以使用DateTime.ParseExact一个自定义的日期和时间格式字符串:

DateTime.ParseExact("Thu Jul 12 08:39:56 GMT+0000 2012", 
                    "ddd MMM dd hh:mm:ss 'GMT'K yyyy",
                    CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

如果字符串和格式字符串不完全匹配,则会抛出格式异常,因此您可能希望使用DateTime.TryParseExact它,false如果失败则返回a .

而不是DateTime你可能想要使用DateTimeOffset保存的时区信息,如@Keith 评论 - 这可能对您的应用程序很重要.