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秒後のタイムスタンプを取得 |
上記以外にも色々な使い方があります。
フォーマットは複数組み合わせることも可能です。