.NET / JavaScript在解析ISO8601时忽略夏令时(DST)

我一直在使用.NET和JavaScript测试日期/时间分析。 这个任务与我之前问过的这个问题有关:

用DateTime结构解析ISO8601日期/时间

请注意,这里的例子是.NET。 为了在JavaScript中也得到这个问题的例子,请参阅上面的链接。

看来,在解析ISO8601格式的日期/时间时,它会忽略DST(夏令时):

例:

Console.WriteLine("Inspecting DateTime.Now");
DateTime now = DateTime.Now;
Console.WriteLine(now.ToLocalTime());
Console.WriteLine(now.ToUniversalTime());

Console.WriteLine("Inspecting ISO8601 Parsing");
DateTime dt = DateTime.Parse("1987-01-05T08:45:30.500+0100");
Console.WriteLine(dt.ToLocalTime());
Console.WriteLine(dt.ToUniversalTime());

结果:

//  Inspecting DateTime.Now
//  27/08/2013 13:44:33
//  27/08/2013 12:44:33

//  Inspecting ISO8601 Parsing
//  05/01/1987 07:45:30
//  05/01/1987 07:45:30

当我显示DateTime.Now的本地/通用时间时,这是正确的。 英国目前处于DST(夏令时,UTC + 01:00)。

当我显示ISO8601字符串的本地/通用时间时,这是不正确的,两者都显示UTC时间。 当地时间应该是“05/01/1987 08:45:30”

这个问题也发生在JavaScript上。

如果我将时区更改为其他内容(即UTC + 04:00),则会得到预期的(正确)结果,但使用当前设置,它似乎忽略DST(夏令时)。

注意:英国时区 UTC + 00:00,但DST使我们处于UTC + 01:00 ......后者似乎在解析日期/时间时被忽略。

任何想法为什么,或者如何解决这个问题?

链接地址: http://www.djcxy.com/p/29377.html

上一篇: .NET/JavaScript ignores daylight saving (DST) when parsing ISO8601

下一篇: moment.js, timezones and daylight savings