PHPにおける日付の作成

PHPにおける日付の考え方

◇日付に関する2種のデータ
・タイムスタンプ
・日付フォーマット

◇標準関数
・タイムスタンプ  time()
・日付フォーマット date()

◇標準関数のデフォルト
特に指定が無ければ、現在のタイムスタンプ/日付フォーマットが取得される

◇変換
タイムスタンプ ⇔ 日付フォーマット

タイムスタンプ:現在

$time = time();

日付フォーマット:現在


$date = date('Y/m/d');
$date = date('Y/m/d H:i:s');
$date = date('Y年n月j日 H:i');

date()のパラメータ

Y 年 4桁の数字 例:1999、2003
y 年 2桁の数字 例:99、03
o ISO-8601形式の年 Yとほぼ同じだが、ISO週番号(W)が前年あるいは翌年に属する場合がある点で異なる
L 閏年かどうか 1なら閏年、0なら閏年でない

m 月 01~12
n 月 1~12
M 月 Jan~Dec
F 月 January~December
t 月の日数 28~31

d 日 01~31
j 日 1~31
S 英語形式の序数を表すサフィックス。st、nd、rd、th。jと一緒に使用する

D 曜日 Mon~Sun
l 曜日 Sunday~Saturday
w 曜日 0 (日曜日)から 6 (土曜日)
N 曜日 1(月曜日)~7(日曜日)
z 年間の通算日 0~365

W 月曜日に始まる年単位の週番号 例: 42 (年の第42週目)

a am、pm
A AM、PM
B Swatch インターネット時間 000~999

H 時 24時間単位 00~23
G 時 24時間単位 0~23
h 時 12時間単位 01~12
g 時 12時間単位 1~12

i 分 00~59

s 秒 00~59

u マイクロ秒 date()の場合、常に000000

O グリニッジ標準時 (GMT) との時差 例: +0200
P グリニッジ標準時 (GMT) との時差 例: +02:00
T タイムゾーンの略称 例: EST、MDT
e タイムゾーン識別子 例: UTC、GMT、Atlantic/Azores
Z タイムゾーンのオフセット秒数 UTCの西側のタイムゾーン用のオフセットは常に負、UTCの東側のオフセットは常に正 -43200~50400
I サマータイム中かどうか 1ならサマータイム中、0ならサマータイム中でない

c ISO-8601日付 例:2004-02-12T15:19:21+00:00
r RFC 2822日付 例: Thu, 21 Dec 2000 16:01:07 +0200
U Unix Epoch (1970年1月1日0時0分0秒) からの秒数 time()と同じ

タイムスタンプを日付フォーマットに変換

$date = date('Y年n月j日 H:i', $time);

日付フォーマットをタイムスタンプに変換

$time = strtotime($date);

日付フォーマットを別フォーマット変換

$date_jp = date('Y年n月j日 H:i', strtotime($date));

過去や未来のタイムスタンプを取得

// 単純計算
$time = time() + 60*60*24;

// mktime()を使用
$time = mktime(0,0,0,date('n'),date('j')+1);

過去や未来の日付フォーマットを取得

// 2行で
$time = mktime(0,0,0,date('n'),date('j')+1);
$date = date('Y/m/d', $time);

// 1行で
$date = date('Y/m/d', mktime(0,0,0,date('n'),date('j')+1));

mktime

下記の引数により、タイムスタンプを取得できる
mktime(時, 分, 秒, 月, 日, 年, サマータイム);

引数は右から順に省略することができる。省略された引数は、現在のローカル日時が適用される

◇実用
mktime(date('H'), date('i'), date('s'), date('n'), date('j'), date('Y'));