私はこのコードをそのように定義しました(明確にするために簡略化されたバージョン):
$fifteenMinsLater = strtotime('+900 second', time());
$now = time();
if ( $now > $fifteenMinsLater ) {
mtrace("This should NEVER happen");
}
else {
mtrace("This should always be the case");
}
2013 年 11 月 3 日午前 2:00 に、America/New_York の DST が終了し、時計が 1 時間前の午前 1:00 に戻ります。
上記のコードを 2013 年 11 月 3 日の午前 1 時から午前 2 時の間に DST が終了した後 (つまり、午前 2 時が午前 1 時になった後) に実行すると、次の行が表示されます。
This should NEVER happen
印刷されます。ただし、DST の切り替え前または新しい午前 2:00 以降はいつでも問題ありません。
これにより、ユーザーが上記のコードを使用する関数にアクセスしようとすると、DST 切り替え直後の 1 時間以内に無残に失敗するという重大なバグが発生しました。
PHP 5.2.11。
何か案は ?