2017-03-23 3 views
0

私は現在UTC + 1ゾーンにいます。 TimeZoneInfo.Local.BaseUtcOffsetは+1を返します。なぜ新しいDateTimeOffset(DateTime.Today).AddDays(4).Offsetと新しいDateTimeOffset(DateTime.Today.AddDays(4))。オフセットは異なる値を返しますか?

new DateTimeOffset(DateTime.Today).AddDays(4).Offsetは+1を返します。

ただし、new DateTimeOffset(DateTime.Today.AddDays(4)).Offsetは+2を返します。

オフセットがプラス4になるまでは、オフセットは同じです。 4日からの呼び出しでは、new DateTimeOffset(DateTime.Today.AddDays(x)).Offsetは+2オフセットを返します。 なぜですか? MSDNから

//Same offset +1 
var offset2 = new DateTimeOffset(DateTime.Today).AddDays(7).Offset; 
var offset22 = new DateTimeOffset(DateTime.Today.AddDays(7)).Offset; 

//Same offset +1 
var offset3 = new DateTimeOffset(DateTime.Today).AddDays(3).Offset; 
var offset32 = new DateTimeOffset(DateTime.Today.AddDays(3)).Offset; 

//Different offset +1 and +2 
var offset4 = new DateTimeOffset(DateTime.Today).AddDays(4).Offset; 
var offset42 = new DateTimeOffset(DateTime.Today.AddDays(4)).Offset; 

//Different offset +1 and +2 
var offset5 = new DateTimeOffset(DateTime.Today).AddDays(5).Offset; 
var offset52 = new DateTimeOffset(DateTime.Today.AddDays(5)).Offset; 
+2

との時間を与えるだろう。 – Joe

答えて

2

私のコメントよりも深刻な答え...

のDateTimeOffsetオブジェクトは、特定の時間帯にAddDaysメソッドを日付と時刻を表すものではありませんので日付と時刻の算術演算を実行するときに、特定のタイムゾーンの調整ルールは考慮されません。

したがって

DateTimeOffset(DateTime.Today).AddDays(5) 

はまた

DateTime.Today.AddDays(5) 

を元の日付(今日= CET = UTC + 1)

のタイムゾーンを変更しないで5におけるローカル時間を与えます日(CEST = UTC + 2)です。

ので

DateTimeOffset(DateTime.Today.AddDays(5)) 

は日曜日に前方にあなたの時計を置くことを忘れないでくださいCESTオフセット(UTC + 2)

+0

ありがとうございます!あなたの答えはあなたのコメントと共に考慮されるべきです。今日は火星23火星です。ヨーロッパの夏時間は4日以内です。 –

関連する問題