1
0

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 1 year has passed since last update.

PHPの日付取得方法まとめ

Posted at

はじめに

主に自分用に、PHPで日付を取る方法をまとめています。
特に、前月や次月の日付を取得したいという場合、取得に注意が必要なので、以下にまとめておきます。

念のたPHPのバージョン

PHP 7.3.29

日付の取得・加算・減算

主にstrtotimeを使用した取得の仕方をまとめます。

//現在の日付のtimestamp
strtotime("now")

//現在の日付をyyyy/MM/dd HH:mm:ssの形式で(デフォルトはUTC。変更したい場合はphp.iniのdate.timezoneを変更)
date('Y/m/d H:i:s', strtotime('now'));

//1年前・1年後
date('Y/m/d H:i:s', strtotime('-1 year'));
date('Y/m/d H:i:s', strtotime('+1 year'));

//1ヶ月前・1ヶ月後
date('Y/m/d H:i:s', strtotime('-1 month'));
date('Y/m/d H:i:s', strtotime('+1 month'));

//1日前・1日後
date('Y/m/d H:i:s', strtotime('-1 day'));
date('Y/m/d H:i:s', strtotime('+1 day'));

//1時間前・1時間後
date('Y/m/d H:i:s', strtotime('-1 hour'));
date('Y/m/d H:i:s', strtotime('+1 hour'));

//1分前・1分後
date('Y/m/d H:i:s', strtotime('-1 minute'));
date('Y/m/d H:i:s', strtotime('+1 minute'));

//1週間前・1週間後
date('Y/m/d H:i:s', strtotime('-1 week'));
date('Y/m/d H:i:s', strtotime('+1 week'));

特定の日付を取得

//今月の月初
date('Y/m/d H:i:s', strtotime('first day of this month'));

//今月の月末
date('Y/m/d H:i:s', strtotime('last day of this month'));

//指定月の月初(targetTimeはstring型で指定。yyyy-MMという形でもOK)
$targetTime = '2022-03-31 00:00:00';
date('Y/m/d H:i:s', strtotime('first day of'.$targetTime));

//指定月の月末
$targetTime = '2022-03-01 00:00:00';
date('Y/m/d H:i:s', strtotime('last day of'.$targetTime));

次月・前月の取得

次月を取得したいからといって、うっかり+1 monthを指定すると、月末とかにズレが発生する。

$targetTime = strtotime('2022-08-31 00:00:00');
echo date('Y/m/d H:i:s', strtotime('+1 month', $targetTime));                  // 2022/10/01 00:00:00
echo date('Y/m/d H:i:s', strtotime('first day of next month', $targetTime));   // 2022/09/01 00:00:00

2022/8/31から+1ヶ月すると、2022/9/31になるが、9月に31日はないので、自動的に9/31→10/1と修正される。

前月も同様となる。

$targetTime = strtotime('2022-03-31 00:00:00');
echo date('Y/m/d H:i:s', strtotime('-1 month', $targetTime));                  // 2022/03/03 00:00:00
echo date('Y/m/d H:i:s', strtotime('last day of last month', $targetTime));    // 2022/02/28 00:00:00

3/31から–1ヶ月は2/31だが、2月は28日までしかないので2/28→3/3となってしまう。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?