1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPで日付の範囲を定義して任意の間隔で処理をする

Last updated at Posted at 2020-09-12

PHPで日付の範囲を定義して1時間毎など任意の間隔で処理をしたい時、例えば2020年1月1日0時0分0秒から2020年1月2日0時0分0秒まで1時間毎にループを回して何か処理をしたい場合の書き方。

結論

<?php

$date_period = new DatePeriod(
  date_create('2020-01-01 00:00:00'),
  new DateInterval('PT1H'),
  date_create('2020-01-02 00:00:00')->add(new DateInterval('PT1H'))
);

foreach($date_period as $date) {
  echo($date->format('Y-m-d H:i:s') . "\n");
}

ここから実際に動かせます
http://sandbox.onlinephpfunctions.com/code/6590f911729eb743b45d73dbfafcc3eafd158581

解説

DatePeriod

DatePeriodクラスを使うと日付の期間を定義できます。
これがTraversableとなっているのでforeachが回せます。

結論のコードを見て分かる通り、引数の1番目に開始日時、3番目に終了日時をDateTimeで指定します。
2番目には間隔を指定しますが、これは後述のDateIntervalクラスで表現します。
終了日時に1時間追加しているのは最後の日時がループに含まれないためです。

DateInterval

DateIntervalクラスを使うと日付(ループ)の間隔を指定できます。
1時間毎はPT1Hと表現します。詳しくはこちらに書いてあります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?