date
そふぃのPHP入門 >> PHP関数リファレンス >> 日付・時刻関数 >> date

date

解説 日付・時刻を書式化する
書式 string date( string format [, int timestamp ] )
string date( string 書式 [, int タイムスタンプ ] )
引数 format フォーマットする書式
timestamp Unixタイムスタンプ
返値 指定された書式でフォーマットされた文字列

PHPマニュアル:date date()

date()関数:概略解説

date()は第2引数で指定されたタイムスタンプを第1引数で指定したフォーマット文字によってフォーマット(整形)し、整形後の文字列を返します。

date()関数:返り値解説

フォーマット(書式化)された文字列を返します。

date()関数:引数解説

format書式
フォーマット(書式)を指定します。書式の指定にはフォーマット文字という書式化用に予め定められた文字を使います。フォーマット文字の一覧は後述します。

参考 フォーマット文字一覧

timestampタイムスタンプ
フォーマットしたい日付や時刻のタイムスタンプを指定します。省略した場合はtime()関数の値、つまり現在時刻が適用されます。

date()関数:補足解説

通常では有効なタイムスタンプの範囲が 1901年12月13日 20:45:54 GMT ~ 2038年1月19日 03:14:07 GMT までです。Windowsでは 1970年1月1日 ~ 2038年1月19日 GMT に制限されます。

参考関数

  • time() ---- 現在のUnixタイムスタンプを取得する
  • gmdate() ---- 日付・時刻を書式化しGMTの日付で取得する
  • mktime() ---- 指定した日時のUNIXタイムスタンプを取得する
  • strftime() ---- ロケールの設定に基づいて日時を書式化する
  • getlastmod() ---- ページの更新時刻を取得する

フォーマット文字一覧

date()のフォーマット文字一覧です。gmdate()でも同じフォーマット文字を使用します。

フォーマット文字 説明
a 午前/午後(am または pm)
A 午前/午後(AM または PM)
B インターネット時間(000 ~ 999)
d 2桁で示す日付(01 ~ 31)
D 3文字の曜日(Sun ~ Sat)
F フルスペルの月(January ~ December)
g 先頭に 0 をつけない12時間単位の時間(1 ~ 12)
G 先頭に 0 をつけない24時間単位の時間(0 ~ 23)
h 2桁で示す12時間単位の時間(01 ~ 12)
H 2桁で示す24時間単位の時間(00 ~ 23)
i 2桁の分(00 ~ 59)
I サマータイム中かどうかのフラグ(1 または 0)
j 先頭に 0 をつけない日付(1 ~ 31)
l フルスペルの曜日(Sunday ~ Saturday)
L 閏年かどうかのフラグ(1 または 0)
m 2桁で示す月(01 ~ 12)
M 3文字で表す月(Jan ~ Dec)
n 先頭に 0 をつけない月(1 ~ 12)
O グリニッジ標準時(GMT)との時間差(+0900 など)
r RFC822に定義されている日付形式(Thu, 21 Dec 2000 16:01:07 +0900 など)
s 2桁で示す秒(00 ~ 59)
S 2文字で表す英語形式の序数を表すサフィックス(st, nd, rd または th)
t 指定した月の日数(28 ~ 31)
T ローカルマシーンのタイムゾーンの設定
U Unix時間(Unixタイムスタンプ:time()の値と同じ)
w 数値で示す曜日(0:日 ~ 6:土)
W ISO-8601 月曜日に始まる年単位の週番号(42:1年の第42週目)
y 西暦を2桁を示す年
Y 西暦を4桁で示す年
z 年間の通算日― 1月1日からの通算日数(0 ~ 366)
Z タイムゾーンのオフセット秒数(-43200 ~ 43200)

この表に挙げられている以外の文字列があればその文字列はそのまま出力されます。

文字の前に \ をつけるとフォーマット文字をそのまま出力できます。 "" (ダブルクォート)で書式を囲んでいる場合に "\n" や "\t" とすると改行・タブとみなされて n や t は出力されません。出力したい時には '\n' とシングルクォートで囲むか、 "\\n" と2重にエスケープして下さい。

サンプルスクリプト

簡単な利用例

  1. <?php
  2. echo date("Y年m月j日 H時i分");
  3. ?>

出力結果

2017年06月28日 14時28分

この例では第2引数の日時が指定されていないので、デフォルトの現在時刻(time()関数の値)が表示されます。

指定した日付のタイムスタンプを取得

  1. <?php
  2. echo date("Y年m月d日 H時i分" , mktime(0,0,0,1,1,2000));
  3. ?>

出力結果

2000年01月01日 00時00分

フォーマット文字のエスケープ

  1. <?php
  2. //「today is weekday(今日の曜日)」と表示させたい
  3. echo date("today is l")."<br />\n"; // 何もエスケープしないと・・・
  4. echo date("\\to\d\a\y \i\s l")."<br />\n"; // ダブルクォートの場合
  5. echo date('\to\d\a\y \i\s l'); // シングルクォートの場合
  6. ?>

出力結果

30201728pm17 2824 Wednesday
t2017day is Wednesday
t2017day is Wednesday

このように英文を表示させたい場合、 フォーマット文字列に指定されている英字があると思い通りの表示になりません。フォーマット文字をそのまま表示させる場合にはエスケープ処理が必要になりますが、シングルクォートとダブルクォートでは処理方法が少し異なるので注意が必要です。