C# 使用DateTime.ParseExact解析ISO8601日期字符串

C# 使用DateTime.ParseExact解析ISO8601日期字符串,c#,.net,datetime,iso8601,C#,.net,Datetime,Iso8601,我尝试按如下方式解析ISO8601格式字符串: "2013-07-16T13:40:20+01:00" 它表示为夏令时(BST)调整的GMT时间。然而,当我解析它时,DateTime.ParseExact行为并不是我所期望的: Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20-02:00", "yyyy-MM-ddTHH:mm:sszzz", null)); Console.WriteLine(DateTime.ParseEx

我尝试按如下方式解析ISO8601格式字符串:

"2013-07-16T13:40:20+01:00"
它表示为夏令时(BST)调整的GMT时间。然而,当我解析它时,
DateTime.ParseExact
行为并不是我所期望的:

Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20-02:00", "yyyy-MM-ddTHH:mm:sszzz", null));
Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20-01:00", "yyyy-MM-ddTHH:mm:sszzz", null));
Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20+00:00", "yyyy-MM-ddTHH:mm:sszzz", null));
Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20+01:00", "yyyy-MM-ddTHH:mm:sszzz", null));
Console.WriteLine(DateTime.ParseExact("2013-07-16T13:40:20+02:00", "yyyy-MM-ddTHH:mm:sszzz", null));
产生以下输出:

16/07/2013 16:40:20
16/07/2013 15:40:20
16/07/2013 14:40:20
16/07/2013 13:40:20
16/07/2013 12:40:20
有没有办法让parse方法将字符串解释为BST时间


谢谢。

:“在特定时区中处理日期和时间值的DateTime结构的另一种替代方法是DateTimeOffset结构。DateTimeOffset结构在专用DateTime字段中存储日期和时间信息,并在专用Int16字段中存储该日期和时间与UTC不同的分钟数。这使得DateTimeOffset值可以反映特定时区的时间,而DateTime值可以明确地只反映UTC和本地时区的时间。“这是一个偏移量。请怀疑它正在打印本地时间。如果需要UTC,请使用ToUniversalTime();