.NET と JavaScript を使用して日付/時刻の解析をテストしています。このクエストは、私が以前に尋ねたものにリンクされています:
ここでの例は .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 に設定されています...日付/時刻を解析するときに無視されているように見えるのは後者です。
理由、またはこれを修正する方法はありますか?