問題 × 解決策

PHPで本日から1年間、毎日の日付を取得する

  • 2020年05月25日
  • PHP

問題

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

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

two × 2 =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧