PHPでは、処理とフォーマットの日付が開発において一般的な要件です。 gmdate()とstrtotime()は、タイムストリングをタイムスタンプに変換し、GMT(Greenwich Standard Time)形式でそれらを出力するのに役立つ2つの非常に実用的な関数です。しかし、これら2つの機能を正しく組み合わせて、指定された日時をフォーマットするにはどうすればよいですか?この記事では詳細に説明します。
strtotime()は、英語のテキストの日付の説明をUNIXタイムスタンプに解析するために使用されます(つまり、1970年1月1日から秒数)。次のようなさまざまな一般的な日付形式をサポートしています。
<?php
$timestamp = strtotime('2025-05-22 15:30:00');
echo $timestamp;
?>
上記のコードは、整数のタイムスタンプを出力します。
gmdate()はdate()に似ていますが、現在のサーバータイムゾーンの時間ではなく、グリニッジ標準時間(GMT)を出力します。最初のパラメーターは日付形式の文字列で、2番目のパラメーターはタイムスタンプです。
<?php
echo gmdate('Y-m-d H:i:s', time());
?>
これにより、現在のGMT時間が出力されます。
これら2つの関数を組み合わせる典型的な使用法は、次のとおりです。
strtotime()を使用して、文字列の日付と時刻をタイムスタンプに変換します
gmdate()を使用して、目的のgmt形式の文字列にタイムスタンプをフォーマットします
例:
<?php
$input_date = '2025-05-22 15:30:00';
$timestamp = strtotime($input_date);
$formatted_date = gmdate('Y-m-d H:i:s', $timestamp);
echo $formatted_date;
?>
ここでは、サーバータイムゾーンに関係なく、指定された日付と時刻はGMT時間として出力されます。
strtotime()に入力された文字列は有効な日付形式である必要があります。それ以外の場合は、 falseが返されます。
gmdate()はGMT時間を出力します。現地時間が必要な場合は、代わりにdate()を使用する必要があります。
結合したら、入力時間文字列のタイムゾーンの意味が明確であることを確認します。そうしないと、時間偏差が発生する可能性があります。
指定されたタイムゾーンで文字列時間を解析し、GMTに変換する場合があります。
<?php
$date = new DateTime('2025-05-22 15:30:00', new DateTimeZone('Asia/Shanghai'));
$date->setTimezone(new DateTimeZone('GMT'));
echo $date->format('Y-m-d H:i:s');
?>
これにより、タイムゾーンの変換を処理する柔軟性が向上します。
上記は、指定された日付と時刻をGMDATEおよびSTRTOTIMEと組み合わせて正しくフォーマットする方法です。それをマスターすると、時間形式とタイムゾーンの問題を効果的に回避し、日付と時刻の処理の精度を向上させることができます。
<?php
// サンプルコード:指定された時間文字列をに変換します GMT フォーマット時間出力
$input_date = '2025-05-22 15:30:00';
$timestamp = strtotime($input_date);
if ($timestamp === false) {
echo '無効な時間形式';
} else {
echo gmdate('Y-m-d H:i:s', $timestamp);
}
?>
<?php
// 使用 DateTime クラスはタイムゾーンをより正確に処理します
$date = new DateTime('2025-05-22 15:30:00', new DateTimeZone('Asia/Shanghai'));
$date->setTimezone(new DateTimeZone('GMT'));
echo $date->format('Y-m-d H:i:s');
?>
関連するドキュメントを参照する必要がある場合は、以下にアクセスできます。
https://gitbox.net/manual/en/function.gmdate.php
https://gitbox.net/manual/en/function.strtotime.php
https://gitbox.net/manual/en/class.datetime.php