PHPで日付を取得して処理をすることはよくあります。
現在の日付を取得するのはdate()関数を使用すればいいのですが、
「明日」「昨日」「来月」「先月」などの日付を取得する場合は、
strtotime()関数やmktime()関数を使用します。
忘れてしまうことが多いので、下記にメモします。
■ PHPで日付取得(明日、昨日、来月、先月)
※出力結果は2014年5月9日の場合
【今日の場合】
1 | date ( 'Y-m-d' ); |
「出力結果」
2014-05-09
【明日の場合】
1 2 3 4 5 | // 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
【昨日の場合】
1 2 3 4 5 | // 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
【来月の場合】
1 2 3 4 5 6 7 | // 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
【先月の場合】
1 2 3 4 5 6 7 | // 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秒後のタイムスタンプを取得 |
上記以外にも色々な使い方があります。
フォーマットは複数組み合わせることも可能です。