問題
PHPで本日から1年間、毎日の日付を取得するには?
解決策
- 「date('Ymd', strtotime('+12 month', strtotime('本日の日付')))」で12ヶ月後(1年後)の日付を取得
- 「while(('本日の日付'->format("Ymd") !== 1年後の本日)){ }」で、ループ処理内にて「'本日の日付'->modify("+1 day");」で日付を1日ずつプラスしていく
毎日の日付を全て取得する
PHPで1日ごとの表の出力用等に、本日から1年間、毎日の日付を取得する記述例をご紹介します。
1年後の日付を取得する。
「date(‘Ymd’, strtotime(‘+12 month’, strtotime(‘本日の日付’)))」で12ヶ月後(1年後)の日付を取得します。
$datecounter = new DateTime("now");
$lastdate = date('Ymd', strtotime('+12 month', strtotime($datecounter->format('Ymd'))));
ポイント!
「date(‘フォーマット’, strtotime(‘+12 month’, strtotime(‘日付’)))」で「+12 month」と記述することで12ヶ月をプラスした日付の値を取得することができます。
+1 day | 1日後 |
---|---|
-1 day | 1日前 |
+1 week | 1週間後 |
-1 week | 1週間前 |
+1 month | 1ヶ月後 |
-1 month | 1ヶ月前 |
ループ処理で本日から1日ずつプラスしていき、1年後の本日と同じ日になったら処理を終了する。
「while((‘本日の日付’->format(“Ymd”) !== 1年後の本日)){ }」で、ループ処理内にて「’本日の日付’->modify(“+1 day”);」で日付を1日ずつプラスしていきます。
while(($datecounter->format("Ymd") !== $lastdate)) {
$date_y = $datecounter->format("Y");
$date_m = $datecounter->format("m");
$date_d = $datecounter->format("d");
$date_label = $datecounter->format("Y年m月d日");
echo $date_label;
$datecounter->modify("+1 day");
}
ポイント!
「‘日付’->modify(“+1 day”)」で「modify(“+1 day”)」と記述することで日付を1日プラスすることができます。
参照
以下のサイトが、より詳しく解説してくれています。
【PHP 1年後の今月末を知りたいにハマる。 – かもメモ】
https://chaika.hatenablog.com/entry/2015/03/31/174404
【日付の計算:strtotime関数 | GRAYCODE PHPプログラミング】
https://gray-code.com/php/calculation-of-date-and-time/
【PHP: DateTime::modify – Manual 】
https://www.php.net/manual/ja/datetime.modify.php
コメント