3

次のような 2 つの Unix タイムスタンプが与えられたとします。

$startDate = 1330581600;
$endDate = 1333170000;

その範囲で毎日ループして、次のように出力したいと思います。

Start Loop
   Day Time Stamp: [Timestamp for the day within that loop]
End Loop

これを行うための何らかのタイプの関数を探してみましたが、それが可能かどうかはわかりません。

4

2 に答える 2

8

私は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()

于 2012-04-17T18:35:19.017 に答える
2
for ($t = $start; $t < $end; $t = strtotime('+1 day', $t)) {
    ...
}
于 2012-04-17T18:38:50.237 に答える