私はいくつかの大規模なタイムスタンプ リストの反復を行っています: それらを date-ranges のテーブルに入れ、範囲でグループ化します。そのためにとても便利な機能を見つけたのですが、その性能strtotime()
が気になります。
たとえば、週のリスト (たとえば、49 週目から 05 週目) をループし、週の始まりとその週の終わりのタイムスタンプを決定する必要がある関数。それを行う便利な方法は次のとおりです。
foreach ($this->weeks($first, $amount) as $starts_at) {
$ends_at = strtotime('+1 week', $starts_at);
$groups[$week_key] = $this->slice($timestamps, $starts_at, $ends_at);
}
//$this->weeks returns a list of timestamps at which each week starts.
//$this->slice is a simple helper that returns only the timestamps within a range, from a list of timestamps.
の代わりにstrtotime()
、可能性として、週の開始から終了までの秒数を調べることができます。99% の時間は24 * 60 * 60 * 7
. しかし、DST スイッチがあるこれらのまれなケースでは、その 24 は 23 または 25 のいずれかである必要がstrtotime()
あります。
年、月 (月、非常に一貫性がありません!)、日、時間の範囲で同じパターンを使用します。3600
タイムスタンプに単純に追加する方が速いと思うのは、数時間だけです。
他の落とし穴はありますか?一貫性のある、DST およびうるう年の安全な日付範囲のためのより良いルートを提供する方法 (PHP5.3 に依存しない!) はありますか?