DateTime.ParseExact - 带时区偏移的iso8601

时间:2013-12-12 07:33:12

标签: c# datetime iso8601

我尝试将字符串日期转换为DateTime。我知道我的字符串是ISO8601格式,带有偏移时区。

我试试这个:

DateTime date = DateTime.ParseExact(strDate,"yyyy-MM-dd'T'HH:mm:sszzz", CultureInfo.InvariantCulture);

但它并不适用于所有情况。

可行表示负偏移: 2013-12-11T14:36:00-01:00

无法正常工作(捕获异常)获得正偏移量: 2013-12-11T14:36:00 + 01:00

我是否以正确的方式使用DateTime.ParseExact?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您提供的字符串适用于我,没有任何格式规范。

        DateTime d = DateTime.Parse("2013-12-11T14:36:00+01:00");
        Debug.Print(d.ToString());
        Debug.Print(d.ToUniversalTime().ToString());

您会看到,在后一个“打印”中,它打印减去1小时,因为您指定了+ 1小时时区。

答案 1 :(得分:0)

唉,我没有对我的字符'+'进行网址编码......:S

它由REST Web服务使用,因此当我发送 2013-12-11T14:36:00%2B01:00 时,它可以工作..!