関数の概要
PHPの gmmktime 関数は、指定した日時をUTC(世界協定時刻、GMT)基準のタイムスタンプに変換します。通常の mktime 関数はローカルタイムゾーンを基準にしますが、gmmktime は必ずGMT(UTC)で扱うため、サーバーやユーザーのタイムゾーンに依存せず正確な時刻を取得できます。
パラメータの説明
hour(省略可) – 時を0〜23の整数で指定。省略時は現在の時刻の値が使われる。minute(省略可) – 分を0〜59の整数で指定。省略時は現在の分が使われる。second(省略可) – 秒を0〜59の整数で指定。省略時は現在の秒が使われる。month(省略可) – 月を1〜12の整数で指定。省略時は現在の月が使われる。day(省略可) – 日を1〜31の整数で指定。省略時は現在の日が使われる。year(省略可) – 年を4桁もしくは2桁の整数で指定。省略時は現在の年が使われる。
戻り値
成功すると指定日時のGMT基準のUNIXタイムスタンプを整数で返します。失敗すると FALSE を返します。
使用例
基本的な使い方
<?php
$timestamp = gmmktime(12, 0, 0, 4, 15, 2024);
echo $timestamp; // GMT基準の2024年4月15日12時0分0秒のタイムスタンプを表示
?>
この例は、GMT基準の2024年4月15日12時00分00秒のUNIXタイムスタンプを取得しています。
現在のGMT日時のタイムスタンプ取得
<?php
$timestamp = gmmktime();
echo $timestamp; // 現在のGMT時間のタイムスタンプ
?>
引数を何も指定しない場合、現在のGMT時刻のタイムスタンプが取得できます。
秒や分、省略可能なパラメータの利用
<?php
// 2024年末日の23時59分のタイムスタンプ(秒は省略して0扱い)
$timestamp = gmmktime(23, 59, 0, 12, 31, 2024);
echo $timestamp;
?>
秒の値を省略したり、分や時のみ指定することも可能です。省略された部分はデフォルトで現在の時刻に基づきますが、特定の日時を正確に指定したい場合はすべての値を指定するのがおすすめです。
関連する関数
mktime– ローカルタイムゾーン基準のタイムスタンプを作成time– 現在のUNIXタイムスタンプを取得(ローカルタイムゾーン基準)gmdate– GMT基準で日時をフォーマット表示date– ローカルタイムゾーン基準で日時をフォーマット表示
まとめ
gmmktime はGMT(UTC)基準の日時をUNIXタイムスタンプで取得したい場合に便利な関数です。タイムゾーンの違いによるズレを気にせず正確なUTC時間を扱うことができるため、国際化対応のアプリケーションやサーバー間の時刻調整に役立ちます。特に日時を固定してUTC基準の時間計算をしたい場合に重宝しますので、状況に応じて mktime と使い分けてください。
