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