27

スケジュールを曜日、時間、分としてデータベースに保存しています。データが読み取られるとDateTime、その日、時、分が次に発生するオブジェクトを作成しますが、これを DST に対応するように変更する必要があります。必要に応じてデータベースを変更できます。

DateTimeOffsetUTC 日付/時刻とオフセットが格納されていることを知っています。また、この MSDN ブログ エントリDateTimeOffsetから、「夏時間で作業する」ために使用する必要があることも知っています。

私が理解するのに苦労しているDateTimeOffsetのは、まさに「夏時間で機能する」方法です。私の理解では、サマータイムは政治的な決定であり、純粋なオフセットから推測することはできないということです. 名前付きのタイムゾーンや国ではなく、オフセットのみを保存する場合、この構造が DST フレンドリーであるとは言えません。

4

1 に答える 1

37

DateTimeOffsetそれ自体は実際にはDSTに対応していませんが、対応していTimeZoneInfoます。ADateTimeOffsetは、固定された瞬間を表します。つまり、タイムゾーンを認識している経由アクセスできます。DateTimeOffset言い換えればDateTimeOffset、英国で今を求めた場合、UTCから+1時間のオフセットで何かが発生することになります。DateTimeOffset英国で12月にしばらくの間を要求した場合、UTCから0時間のオフセットで何かが発生することになります。

データベースを変更してオフセットを含める場合DateTimeOffsetユーザーが選択した(「指定されていない」種類の)タイムゾーンからを作成するDateTimeと、DSTを考慮した正しいオフセットが得られます。

ただし、注意すべき点が1つあります。「2年後」に何かをスケジュールし、今オフセットを決定した場合、そのオフセットは将来正しくない可能性があります。たとえば、DSTが適用されると政府が変更される可能性があり、明らかにそれはデータベースに保存されているものを変更するつもりはありません。

于 2011-09-26T10:57:19.730 に答える