2016-08-15 6 views
0

ある中央ヨーロッパ標準時に変換:UTCは、私は私の日付が間違っている理由を理解しようとしている前で2時間ない1

DateTime databaseUtcTime = new DateTime(2016, 8, 15, 10, 20, 0, DateTimeKind.Utc); 
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time"); 
var testDateTime = TimeZoneInfo.ConvertTimeFromUtc(databaseUtcTime, timeZone); 

testDateTime出力15/08/2016 12時20分00秒ではなく、15/08/2016 11:20:00 これはなぜですか? UTCより1時間遅れてはなりませんか?2ではなくなりますか?

EDIT ----

おかげでジョンスキート、

これは誰を助けている場合、私が使用してに頼っ:

if(testDateTime.IsDaylightSavingTime()) 
{ 
    testDateTime = testDateTime.AddHours(-1); 
} 

をあなたは、コンテキストを知らないとはいえ、これは可能性がある特定の明示的なテストを時間通りに実行しているときに夏時間を取り除く方法を知るのに役立ちます。

+2

NodaTimeに変わるまでの時間です。 (これは良いキャッチフレーズです):https://github.com/nodatime/nodatime – user3185569

答えて

2

"中央ヨーロッパ標準時"のIDを持つタイムゾーンは、中央ヨーロッパで使用されているものだけです... は実際には平均標準時です。

現在、中央ヨーロッパは夏時間を観測しているため、オフセットは実際にはUTC + 2です。

Windowsタイムゾーンで使用されているIDがこのような誤解を招くことは非常に残念ですが、TimeZoneInfo実装自体は正しいです。

(これは、Windowsのタイムゾーン名と間違っていることのすべてではありません... ...多くのための問題にMatt Johnson'sポストを参照してください)

+1

Jon Skeet、Jo(h)n Cenaのプログラマーバージョン。 – Jimmyt1988

+0

@ Jimmyt1988人は、それが賛成だと主張するだろう。これはMr. Skeetの場合ではありません。 – user3185569

+0

ハハハ@ user3185569 - 申し訳ありませんが、私はチャックノリスと言っていたはずです。 – Jimmyt1988

関連する問題