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



我正在与Web服务聊天,该服务以这种格式返回日期
Fri, 02 Oct 2009 05:33:11 - 0500

我一直在尝试将其解析为C#中的DateTime并获得无效的字符串错误。

字符串未被认为是有效的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);

如果我从ParseExact参数中删除- 0500- zzzz,则可以正常工作。不知道我在时区上做错了什么。任何方向都将不胜感激。我尝试了" z"的不同计数,并删除了" - ",也假设这让负面。

您简单地,

您的输入不是有效的字符串,除非 您进行了一些字符串操作,否则可以解析为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);

现在您有一个DateTimeOffset作为2.10.2009 05:33:11 -05:00,可以使用它的DateTimeLocalDateTimeUtcDateTime属性。

最新更新