PHP:PHPで明日、昨日、来月、先月などの日付取得

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秒後のタイムスタンプを取得

上記以外にも色々な使い方があります。
フォーマットは複数組み合わせることも可能です。


php:phpのdate関数で日付のフォーマット変更

phpで日付文字列の形式(フォーマット)を変換する場合のメモです。date関数を使用し変換します。
いつも忘れてしまうので。
データベースからdatetime型の値を取得した時に時間を表示せず年月日だけ表示したい場合などがあります。
下記の方法で指定の形式に日付・日時を変更できます。


【PHP】

$date = '2013-01-01 00:00:00';
echo date('Y/m/d', strtotime($date));

【出力結果】

2013/01/01

【PHP】

$date = '2013-01-01 00:00:00';
echo date('Y年n月j日', strtotime($date));

【出力結果】

2013年1月1日

strtotime()でUnixタイムスタンプを取得し、date()で日付のフォーマットを変更します。


date()関数のフォーマット

下記にdate()関数でよく使用するフォーマットをメモします。

※下記以外にもフォーマットはあります。

フォーマット 内容
Y 4桁の年。例:2014
y 2桁の年。例:14
L 閏年。1:閏年 0:閏年ではない

フォーマット 内容
m ゼロ詰めの月。01~12
n ゼロなしの月。1~12
F フルスペルの月。例:January
M 3文字形式の月。例:Jan
t 月の日数。28~31

フォーマット 内容
d ゼロ詰めの日。01~31
j ゼロなしの日。1~31
z 年間の通算日。0~365

フォーマット 内容
g 12時間単位の時(ゼロなし)。1~12
G 24時間単位の時(ゼロなし)。0~23
h 12時間単位の時。01~12
H 24時間単位の時。00~23

フォーマット 内容
i 分。00~59

フォーマット 内容
s 秒。00~59

午前・午後

フォーマット 内容
a 午前:am 午後:pm
A 午前:AM 午後:PM

曜日

フォーマット 内容
D 3文字形式の曜日。例:Mon
l フルスペルの曜日。例:Monday
N ISO-8601形式の曜日。1(月)~7(日)
w 曜日。0(日)~6(土)