DateTime.ParseExact与非标准时区字符串的问题

Joe*_*Dan 1 c# datetime parsing

我正在谈论以这种格式给我回复日期的网络服务
Fri, 02 Oct 2009 05:33:11 - 0500

我一直在尝试将其解析为DateTimeC#并获得无效的字符串错误.

字符串未被识别为有效的DateTime

这是代码:

string text = "Fri, 02 Oct 2009 05:33:11 - 0500";
DateTime date = DateTime.ParseExact(text,"ddd, dd MMM yyyy h:mm:ss - zzzzz", null);
Run Code Online (Sandbox Code Playgroud)

如果我从参数中删除 - 0500和 ,它可以正常工作.不知道我在时区上做错了什么.任何方向将不胜感激.我已经尝试了不同的"z"计数并删除了" - "也假设它让人感到困惑.- zzzzParseExact

Son*_*nül 5

你干脆,不可以.

您的输入不是可以解析的有效字符串,DateTime 除非您在其中执行某些字符串操作.你的偏移部分必须有半冒号(:)来解析它.

此外,您需要使用hh说明符(或更好HH),因为您的小时部分具有前导零.

我只能想到一种方法,获取空白的最后一个索引,删除它,:在你的小时和分钟偏移之间插入,并解析它,DateTimeOffset因为你的字符串有UTC偏移部分.

string text = "Fri, 02 Oct 2009 05:33:11 -05:00";
var dto = DateTimeOffset.ParseExact(text, "ddd, dd MMM yyyy HH:mm:ss zzz", 
                                    CultureInfo.InvariantCulture, DateTimeStyles.None);
Run Code Online (Sandbox Code Playgroud)

现在你有一个DateTimeOffset2.10.2009 05:33:11 -05:00你可以使用它DateTime,LocalDateTimeUtcDateTime性质.