PHPのgmdate()関数とは?GMT/UTC基準で日時をフォーマットする方法を解説
PHPのgmdate()関数とは
gmdate()関数は、GMT/UTC(グリニッジ標準時)に基づいた日付・時刻を整形し、文字列として返すPHPの組み込み関数です。date()関数とよく似ていますが、date()がサーバーのローカルタイムゾーンを使用するのに対し、gmdate()は常にGMT/UTCを基準として処理する点が大きな違いです。国際的なサービスやログの記録など、タイムゾーンに依存しない統一された日時表示が必要な場面で活躍します。
構文
gmdate(format, timestamp)
パラメータ
format:出力する日付文字列の形式を指定します。使用可能な書式指定文字は以下の通りです。
日に関する書式指定子
d:月の中の日(01〜31)
D:曜日の3文字表記(Mon〜Sun)
j:先頭ゼロなしの日にち(1〜31)
l(小文字のL):曜日の完全なテキスト表記(Sunday〜Saturday)
N:ISO-8601形式の曜日番号(月曜=1、日曜=7)
S:日にちの英語序数接尾辞(st、nd、rd、th の2文字。jと組み合わせると便利)
w:数値表記の曜日(日曜=0、土曜=6)
z:年間通算日(0〜365)
週・年に関する書式指定子
W:ISO-8601形式の週番号(月曜始まりの週)
F:月の完全なテキスト表記(January〜December)
m:数値表記の月(01〜12)
M:月の短いテキスト表記(Jan〜Dec)
n:先頭ゼロなしの数値表記の月(1〜12)
t:指定した月の日数
L:閏年かどうか(閏年なら1、それ以外は0)
o:ISO-8601形式の年番号
Y:4桁表記の年
y:2桁表記の年
時刻に関する書式指定子
a:小文字の am または pm
A:大文字の AM または PM
B:Swatchインターネット時間(000〜999)
g:12時間形式の時(先頭ゼロなし、1〜12)
G:24時間形式の時(先頭ゼロなし、0〜23)
h:12時間形式の時(01〜12)
H:24時間形式の時(00〜23)
i:先頭ゼロ付きの分(00〜59)
s:先頭ゼロ付きの秒(00〜59)
タイムゾーンに関する書式指定子
e:タイムゾーン識別子(例:UTC、Atlantic/Azores)
I(大文字のi):サマータイムかどうか(サマータイム中なら1、それ以外は0)
O:グリニッジ標準時(GMT)との差(時間単位、例:+0100)
T:PHPマシンのタイムゾーン設定(例:EST、MDT)
Z:タイムゾーンオフセット(秒単位)。UTCより西は負、東は正(-43200〜43200)
日付全体の書式指定子
c:ISO-8601形式の日付(例:2004-02-12T15:19:21+00:00)
r:RFC 2822形式の日付(例:Thu, 21 Dec 2000 16:01:07 +0200)
U:Unixエポック(1970年1月1日 00:00:00 GMT)からの経過秒数
timestamp:整数型のUnixタイムスタンプ。省略した場合、現在のローカル時刻(time()の戻り値)がデフォルトとして使用されます。
戻り値
gmdate()関数は、フォーマットされた日付文字列を返します。timestampに数値以外の値を指定した場合は FALSE を返し、E_WARNINGレベルのエラーが発生します。
使用例
以下は、mktime()で生成したタイムスタンプをGMT/UTC基準でフォーマットする例です。
<?php
echo gmdate("M d Y H:i:s", mktime(0, 0, 0, 8, 8, 2018));
?>
出力結果
Aug 08 2018 00:00:00
使用例2
次に、定義済み定数 DATE_RFC822 を使ってRFC 822形式で日時を出力する例を見てみましょう。
<?php
echo gmdate(DATE_RFC822);
?>
出力結果
Thu, 11 Oct 18 05:10:32 +0000
まとめ
gmdate()関数は、GMT/UTCを基準に日時を整形できる便利な関数です。ローカルタイムゾーンの影響を受けたくない場合や、世界中のユーザーに対して共通の時刻を表示したい場合には、date()の代わりにgmdate()を使うことで、環境に左右されない安定した日時処理を実現できます。
-
【PHP入門】date()関数の使い方を徹底解説!日付・時刻の書式指定子一覧と実行例
PHPの date() 関数は、ローカルの日付や時刻を任意の形式に整形(フォーマット)するための関数です。整数型のUnixタイムスタンプを引数として渡すと、その時刻をもとに整形された文字列が返されます。タイムスタンプを省略した場合は、現在の時刻が自動的に使用されます。 基本構文 date(format, timestamp) パラメータ timestamp − 整数型のUnixタイムスタンプ。省略した場合は、現在のローカル時刻がデフォルトで使用されます。 format − 結果の出力形式を指定する書式文字列。主な指定文字は以下のとおりです。 日に関する書式指定子 d − 日(01〜31)。
-
PHPのdate_format()関数の使い方を徹底解説!日付フォーマットの基本と書式指定子一覧
PHPのdate_format()関数は、DateTimeオブジェクトを指定した書式に従って整形し、文字列として返す関数です。日付や時刻を自由な形式で表示したい場合に非常に便利な、日付処理の基本となる関数の一つです。構文date_format(obj, format)パラメータ(引数)obj − フォーマット対象となる DateTime オブジェクトを指定します。format − 出力結果の書式を指定します。主な書式指定子は以下のとおりです。日に関する指定子d − 日(01〜31)。先頭にゼロが付きます。D − 曜日の省略形(3文字。例:Mon、Tue)。j − 日(1〜31)。先頭にゼロが付