C# DateTime.ParseExact-带时区偏移的iso8601

C# DateTime.ParseExact-带时区偏移的iso8601,c#,datetime,iso8601,C#,Datetime,Iso8601,我尝试将字符串日期转换为日期时间。我知道我的字符串是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 我是否

我尝试将字符串日期转换为日期时间。我知道我的字符串是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


谢谢您的帮助。

您提供的字符串在没有任何格式规范的情况下适用于我

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

您可以看到,在后一种打印中,它打印的时间为负1小时,正如您指定的+1小时时区。

Argh,我没有对我的字符“+”进行url编码:


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

你确定吗?两者对我都有效。