DateTimeOffsetと夏時間について質問があります。夏時間変更後のDateTimeOffset表示
11/6/2010 10:15:00 AM
私はこのコードを実行した場合::
DateTimeOffset myTime = DateTimeOffset.Now;
Console.WriteLine("Local time: " + myTime.ToLocalTime().DateTime);
をその後、私はこの結果を得る:
現地時間:私の質問を説明するには、今の日付と時間があることを前提としています11/6/2010 10:15:00 AM
午前10時15分にイベントが発生したことを意味する(私のタイムゾーンは山岳夏時間(-6オフセット)です)。
したがって、このDateTimeOffsetを(DateTimeOffsetとして)SQL Server 2008 dbに保存します。翌日、私はそれをユーザーに表示したい。しかし、今や夏時間の有効期限が切れています。
上記のWriteLineを(前日から)保存されたオフ値で実行すると、何が表示されますか?
データベースに格納されているオフセットは-6です。しかし、夏時間が終わったので、現在のオフセットは-7です。私はdocumentationを理解しているので、まずUTC時間に変換します(10:15 AMに6時間(午後4時15分)を追加します)。午後 - 。7 = 9:15)
だから私私の数学は今、私は私のイベントを表示するとき、それは9:15よりむしろ10:15で起こったことが示されます、右であれば
。これはうまくいきません。タイムゾーンの情報を保存したいのですが、同じ時間帯に静かに滞在する必要があります(つまり、イベントがユタ州の午前10時15分に発生した場合は、それ(ユタ州)では、夏時間の変更があったかどうかに関係なく、午前10時15分になっていたことがわかります。
私はこの問題を抱える最初の人だとは思わない。これを解決するためにほかの人は何をしますか? (それとも私が間違っている事実がありますか?)
合意 - あなたがタイムゾーンを把握している限り、DateTimeOffsetオブジェクトを格納することはあまり購入しません。ちょうどUTCを使用して、タイムゾーンIDをそれに格納してください。 – Doug