次のような 2 つの Unix タイムスタンプが与えられたとします。
$startDate = 1330581600;
$endDate = 1333170000;
その範囲で毎日ループして、次のように出力したいと思います。
Start Loop
Day Time Stamp: [Timestamp for the day within that loop]
End Loop
これを行うための何らかのタイプの関数を探してみましたが、それが可能かどうかはわかりません。
私はDateTime、DateInterval、DatePeriodが大好きなので、これが私の解決策です:
$start = new DateTime();
$end = new DateTime();
$start->setTimestamp(1330581600);
$end->setTimestamp(1333170000);
$period = new DatePeriod($start, new DateInterval('P1D'), $end);
foreach($period as $dt) {
echo $dt->format('Y-m-d');
echo PHP_EOL;
}
これは最初は混乱するように見えますが、非常に論理的なアプローチです。
DatePeriodを使用すると、期間の開始と終了を 1 日の間隔で定義し ( DateIntervalで形式を調べます)、それを繰り返すことができます。
最後に、すべての反復で、使用できるDateTime オブジェクトを取得しますDateTime::format()
for ($t = $start; $t < $end; $t = strtotime('+1 day', $t)) {
...
}