繰り返し発生するイベントがあるとします。これは、そのタイム ゾーンで夏時間がオンかオフかに関係なく、常に同じ現地時間 (たとえば 17:00 など) であるとします。また、特定のタイム ゾーンで DST がオンまたはオフになったときに時間を手動で変更しないという要件もあります。また、API (つまり GetEndTimeByEvent) を介して他のシステムから終了時刻が要求されるたびに、常に UTC 形式で終了時刻を送信することも要件です。
アプローチ 1: UTCで保存する ことにした場合は、以下のようにデータベース テーブルに保存できます。
Event UTCEndTime
=====================
ABC 07:00:00
MNO 06:00:00
PQR 04:00:00
最初のイベント ABC の場合、UTC での終了時刻は午前 07:00 であり、2012 年 7 月 1 日に UTC から現地時間に変換して表示すると、現地時間の 17:00 になり、2012 年 10 月 10 日に変換すると (タイム ゾーンの DST がオンになっている日付) は、正しい終了時間ではない午後 6 時になります。
考えられる 1 つの方法は、追加の列に DST 時間を格納し、タイムゾーンで DST がオンになっているときにその時間を使用することです。
アプローチ 2: ただし、イベント ABC の例として以下のように現地時間として保存されている場合、UTC から現地時間への変換がないため、どの日付でも常に 17:00 になります。
Event LocalEndTime
=======================
ABC 17:00:00
MNO 16:00:00
PQR 14:00:00
また、アプリケーション レイヤーはローカル時間を UTC 時間に変換し、(API GetEndTimeByEvent) を介して他のシステムに送信します。
この場合、時間を UTC で保存することをお勧めしますか? はいの場合、一定の現地時間を取得する方法は?
関連する質問: UTC 以外の時間を保存する正当な理由はありますか?