PHPプログラミングでは、調整されたユニバーサル時間(UTC)としても知られる現在のグリニッジ標準時間(GMT)を取得する必要がある場合があります。 PHPは、 GMDATE()関数とTime()関数の非常に便利な組み合わせを提供します。この要件を簡単に達成できます。
gmdate() : date()と同様ですが、現地時間ではなくGMT時間を返します。
Time() :UNIX ERA以降の現在のタイムスタンプを返します(1970年1月1日に00:00:00 GMT)。
これら2つの関数を組み合わせることにより、現在のGMT時間を取得できます。
<?php
echo gmdate("Y-m-d H:i:s", time());
?>
このコードは、次の形式と同様のGMT時間文字列を出力します。
2025-05-22 07:45:30
「YMD H:I:S」は、PHPで一般的に使用される日付と時刻の形式であり、年日の時間:数分:秒を表します。
time()現在のUnixタイムスタンプを返します。
gmdate()はこのタイムスタンプを受け取り、GMT標準に従って時間をフォーマットします。
クロスタイムゾーンデータレコード:国際的なアプリケーションでは、GMT時間の統一された使用は、タイムゾーンの違いによって引き起こされるデータの混乱を回避するのに役立ちます。
ログシステム:多くのシステムログはGMT時間形式を使用しており、統一された処理とシステムの比較を容易にします。
APIタイムスタンプの要件:一部のAPIでは、特に安全な署名検証中に、タイムスタンプがGMT時間である必要があります。
一部の開発者は、日付()とgmdate()を混乱させる傾向があります。 2つの間の重要な違いはタイムゾーンです。
<?php
echo "Local time: " . date("Y-m-d H:i:s") . "\n";
echo "GMT time: " . gmdate("Y-m-d H:i:s") . "\n";
?>
サーバータイムゾーンが東第8地区(中国など)に設定されている場合、出力は次のとおりです。
Local time: 2025-05-22 15:45:30
GMT time: 2025-05-22 07:45:30
Gmdate()はミリ秒を直接サポートしていませんが、 MicroTime()分割を介して実装できます。例えば:
<?php
$micro = microtime(true);
$seconds = floor($micro);
$milliseconds = round(($micro - $seconds) * 1000);
echo gmdate("Y-m-d H:i:s", $seconds) . ".$milliseconds GMT";
?>
出力は似ています:
2025-05-22 07:45:30.123 GMT
展開するPHPプログラムがGMT時間を均一に使用する必要がある場合、デフォルトのタイムゾーンをUTCに設定できます。
<?php
date_default_timezone_set('UTC');
?>
ただし、現時点でDate()を使用するとGMT時間も返されるため、 GMDATE()を使用する必要はなくなります。
gmdate()とtime()を組み合わせることにより、PHPで現在のGMT時間を非常に便利に取得できます。この方法は、クロスタイムゾーン処理、統一ロギング、サーバー側の開発において非常に実用的です。これは間違いなく、時間出力を正確に制御する必要があるPHP開発者にとってマスターする価値のあるスキルです。
より実用的なコード参照については、ご覧ください。
https://gitbox.net/snippets/php-gmtime