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

时间:2016-06-16 19:05:00

标签: c# parsing datetime

我正在与以这种格式向我回复日期的网络服务进行交谈 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);

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

1 个答案:

答案 0 :(得分:5)

您只是,无法

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

此外,您需要使用hh specifier(或更喜欢HH),因为您的小时部分有一个前导零。

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

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

现在您的DateTimeOffset2.10.2009 05:33:11 -05:00,您可以使用DateTimeLocalDateTimeUtcDateTime属性。