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

gmdate

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

PHPマニュアル:gmdate gmdate()

gmdate()関数:概略解説

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

date()と機能や使用方法は同じですが、gmdate()の場合は返される時刻がグリニッジ標準時(GMT)となります。

gmdate()関数:返り値解説

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

gmdate()関数:引数解説

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

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

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

gmdate()関数:補足解説

日本のタイムゾーンは +0900 です。つまり、GMTより9時間先行してるって事ですので、日本で使う場合はで取得したタイムスタンプに9時間を足す必要があります。

gmdate()関数:注意

タイムゾーンのオフセット秒数を取得する Z 形式のフォーマット文字は、gmdate関数では常に 0 を返します。

参考関数

  • time() ---- 現在のUnixタイムスタンプを取得する
  • date() ---- 日付・時刻を書式化する
  • mktime() ---- 指定した日時のUNIXタイムスタンプを取得する
  • gmmktime() ---- GMTで指定した日時のUNIXタイムスタンプを取得する

フォーマット文字一覧

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. // 現在時刻の各値をGMTとして取得
  3. $hour = gmdate("H");
  4. $minute = gmdate("i");
  5. $second = gmdate("s");
  6. $month = gmdate("n");
  7. $day = gmdate("j");
  8. $year = gmdate("Y");
  9.  
  10. // GMTからタイムスタンプを生成
  11. $timestamp = gmmktime($hour, $minute, $second, $month, $day, $year);
  12.  
  13. echo "GMT時間:".gmdate("Y/m/d H:i:s", $timestamp)."<br />\n";
  14. echo "日本時間:".date("Y/m/d H:i:s");
  15. ?>

出力結果

GMT時間:2017/03/28 23:24:36
日本時間:2017/03/29 08:24:36