我一直在使用.NET和JavaScript测试日期/时间解析 . 这个任务与我之前提到的这个问题有关:
Parsing ISO8601 date/time with DateTime struct
请注意,这里的示例是.NET . 要在JavaScript中获得此问题的示例,请参阅上面的链接 .
看来,在解析ISO8601格式的日期/时间时,它会忽略DST(夏令时):
Example:
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());
Results:
// 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),那么我会得到预期的(正确的)结果,但是使用我当前的设置,它似乎忽略了夏令时(夏令时) .
Note: 英国时区 IS UTC 00:00,但DST将我们置于UTC 01:00 ...后者在解析日期/时间时似乎被忽略 .
任何想法为什么,或如何解决这个问题?