PHPで日付を取得して処理をすることはよくあります。
現在の日付を取得するのはdate()関数を使用すればいいのですが、
「明日」「昨日」「来月」「先月」などの日付を取得する場合は、
strtotime()関数やmktime()関数を使用します。
忘れてしまうことが多いので、下記にメモします。
■ PHPで日付取得(明日、昨日、来月、先月)
※出力結果は2014年5月9日の場合
【今日の場合】
date('Y-m-d');
「出力結果」
2014-05-09
【明日の場合】
// strtotime()を使用した場合 date('Y-m-d', strtotime('+1 day')); // mktime()を使用した場合 date('Y-m-d', mktime(0, 0, 0, date('n'), date('j') + 1, date('Y')));
「出力結果」
2014-05-10
【昨日の場合】
// strtotime()を使用した場合 date('Y-m-d', strtotime('-1 day')); // mktime()を使用した場合 date('Y-m-d', mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')));
「出力結果」
2014-05-08
【来月の場合】
// strtotime()を使用した場合 //date('Y-m', strtotime('+1 month')); date('Y-m', strtotime(date('Y-m-1') . '+1 month')); // mktime()を使用した場合 //date('Y-m', mktime(0, 0, 0, date('n') + 1, date('j'), date('Y'))); date('Y-m', mktime(0, 0, 0, date('n') + 1, 1, date('Y')));
「出力結果」
2014-06
【先月の場合】
// strtotime()を使用した場合 //date('Y-m', strtotime('-1 month')); date('Y-m', strtotime(date('Y-m-1') . '-1 month')); // mktime()を使用した場合 //date('Y-m', mktime(0, 0, 0, date('n') - 1, date('j'), date('Y'))); date('Y-m', mktime(0, 0, 0, date('n') - 1, 1, date('Y')));
「出力結果」
2014-04
※来月と先月の月の取得を訂正しました。
■ strtotime()関数のフォーマット
下記にstrtotime()関数でよく使用するフォーマットをメモします。
※「+1」の数値は取得したい値に変更できます。
フォーマット | 内容 |
---|---|
now | 現在のタイムスタンプを取得 |
today | 今日のタイムスタンプを取得 |
tomorrow | 明日のタイムスタンプを取得 |
yesterday | 昨日のタイムスタンプを取得 |
+1 day | 1日後のタイムスタンプを取得 |
+1 week | 1週間後のタイムスタンプを取得 |
+1 month | 1ヵ月後のタイムスタンプを取得 |
+1 year | 1年後のタイムスタンプを取得 |
+1 hour | 1時間後のタイムスタンプを取得 |
+1 minute | 1分後のタイムスタンプを取得 |
+1 second | 1秒後のタイムスタンプを取得 |
上記以外にも色々な使い方があります。
フォーマットは複数組み合わせることも可能です。