DateTimeOffset と夏時間について質問があります。私の質問を説明するために、現在の日付と時刻が次のとおりであると仮定します。
11/6/2010 10:15:00 AM
このコードを実行すると:
DateTimeOffset myTime = DateTimeOffset.Now;
Console.WriteLine("Local time: " + myTime.ToLocalTime().DateTime);
次に、次の結果が得られます。
現地時間: 2010 年 11 月 6 日 10:15:00 AM
イベントが午前 10 時 15 分に発生したことを意味します (私のタイムゾーンは山地夏時間 (-6 オフセット))。
そこで、この DateTimeOffset を SQL Server 2008 データベースに (DateTimeOffset として) 保存します。翌日、ユーザーに表示したい。しかし、現在、サマータイムは終了しています。
上記の WriteLine を (前日から) 保存された off 値で実行すると、何が表示されますか?
データベースに格納されるオフセットは -6 です。しかし、夏時間が終わった今、現在のオフセットは -7 です。ドキュメントを理解しているので、最初に時間をUTC時間に変換します(したがって、午前10時15分かかり、6時間(午後4時15分)が追加されます。次に、現地時間の現在のオフセット(4時15分)が減算されます午後 - 7 = 午前 9 時 15 分)。
したがって、私の計算が正しければ、イベントを表示すると、午前 10 時 15 分ではなく午前 9 時 15 分に発生したことが示されます。
これは良くない。タイム ゾーン情報を保存したいのですが、同じタイム ゾーンで静的な時間を維持する必要があります。(つまり、イベントがユタ州で午前 10 時 15 分に発生した場合、次に (ユタ州で) それを見るとき、夏時間の変更が発生したかどうかに関係なく、それが午前 10 時 15 分であったことを確認する必要があります。 .
私がこの問題を抱えた最初の人だとは思えません。これを修正するために他の人は何をしますか?(それとも、事実が間違っているのでしょうか?)