PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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()を使うことで、環境に左右されない安定した日時処理を実現できます。

  1. 【PHP入門】date()関数の使い方を徹底解説!日付・時刻の書式指定子一覧と実行例

    PHPの date() 関数は、ローカルの日付や時刻を任意の形式に整形(フォーマット)するための関数です。整数型のUnixタイムスタンプを引数として渡すと、その時刻をもとに整形された文字列が返されます。タイムスタンプを省略した場合は、現在の時刻が自動的に使用されます。 基本構文 date(format, timestamp) パラメータ timestamp − 整数型のUnixタイムスタンプ。省略した場合は、現在のローカル時刻がデフォルトで使用されます。 format − 結果の出力形式を指定する書式文字列。主な指定文字は以下のとおりです。 日に関する書式指定子 d − 日(01〜31)。

  2. PHPのdate_format()関数の使い方を徹底解説!日付フォーマットの基本と書式指定子一覧

    PHPのdate_format()関数は、DateTimeオブジェクトを指定した書式に従って整形し、文字列として返す関数です。日付や時刻を自由な形式で表示したい場合に非常に便利な、日付処理の基本となる関数の一つです。構文date_format(obj, format)パラメータ(引数)obj − フォーマット対象となる DateTime オブジェクトを指定します。format − 出力結果の書式を指定します。主な書式指定子は以下のとおりです。日に関する指定子d − 日(01〜31)。先頭にゼロが付きます。D − 曜日の省略形(3文字。例:Mon、Tue)。j − 日(1〜31)。先頭にゼロが付