レコードが作成および更新されたときにタイムスタンプを記録するサーバー側アプリケーションを実装しました。アプリは、サーバー クロックで夏時間が有効になっていないことを前提としています。(a) これがベスト プラクティスであると読んだため、(b) 発生するあいまいさを処理するのは (不可能ではないにしても) 難しいと思うためです。たとえば、10 月に時計が 1 時間戻る場合などです。
安全のため、起動時に DST が有効になっていることをアプリが検出すると、エラーがログに記録され、アプリが終了します。アプリ サーバーのクロックで DST が有効になっている場合でも、アプリケーションを動作させるように内部関係者から請願を受けています。
これは無謀なことだと思いますが、経営陣を説得する必要があります。実装がよりトリッキーになるだけなのか、それとも根本的な欠陥により、そのようなアプリ (タイムスタンプを記録する) が 1 年中いつでも 100% 正しく機能することは不可能なのでしょうか? DST を有効にしてそのようなアプリを実行しないための最良の議論は何ですか?
私が思いついた最高のものは次のとおりです。
夏時間が有効になっている場合、年に 2 回の時間の不連続があります。サーバーが英国で実行されており、時計が現地時間に設定され、夏時間が有効になっている場合を考えてみましょう。2009 年 10 月 25 日の午前 2 時に、時計は 1 時間戻り午前 1 時になります。 レコードは午前 1 時 30 分に作成されます アプリ (タイムスタンプを UTC で保存する必要があります) は、これが午前 1 時 30 分で、時計が戻る前か後かを判断できないため、UTC への調整に余分な時間を含めるかどうかを判断できません。
これは本当ですか?10 月 25 日の午前 1 時 30 分に発生するイベントが時計調整の前か後かを (Java Web アプリで) 実際に判断することは可能ですか?
DST を回避するより良い理由はありますか?
アップデート
明確にするために、アプリが時刻を UTC として保存する必要があるのは当然のことです。問題は、これを実行しようとするときに、サーバー マシンで DST を有効にするのがなぜ悪い考えなのかということです。