0

我一直在使用 .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 ......在解析日期/时间时,后者似乎被忽略了。

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

4

0 回答 0