PHPでは、タイムゾーンとタイムスタンプの取り扱いは一般的なタスクです。 Timezone_name_getとmktimeは、特定のタイムゾーンでUnixタイムスタンプを計算するのに役立つ2つの非常に有用な機能です。この記事では、これら2つの機能を使用してこの関数を実装し、簡単な例コードを提供する方法について説明します。
timezone_name_get関数指定されたdatetimezoneオブジェクトのタイムゾーン名を返します。このタイムゾーン名は、通常、アメリカ/new_yorkやアジア/上海などの地域/都市形式です。
使用例:
$timezone = new DateTimeZone('Asia/Shanghai');
echo timezone_name_get($timezone);
出力結果:
Asia/Shanghai
MKTIME関数は、特定の時間のためにUNIXタイムスタンプを計算するために使用されます。複数のパラメーターを受け入れて、年、月、日、時間、瞬間、および2番目の時間を指定します。この関数は通常、現地時間をUNIXタイムスタンプに変換するために使用されます。
使用例:
$timestamp = mktime(14, 30, 0, 6, 12, 2025);
echo $timestamp;
出力の結果は、2025年6月12日の14:30:00のUNIXタイムスタンプです。
特定のタイムゾーンのUNIXタイムスタンプを計算する場合、 TimeZone_Name_GetとMKTIMEを組み合わせて使用する必要があります。具体的なアイデアは次のとおりです。
TimeZone_name_getを使用してTimeZone情報を取得します。
DateTimeZoneオブジェクトを作成し、ターゲットタイムゾーンとして設定します。
DateTimeオブジェクトを作成し、そのタイムゾーンの時間に設定します。
MKTIME関数を使用して、時間をUNIXタイムスタンプに変換します。
TimeZone_name_getとmktimeを組み合わせた完全な例コードを次に示し、特定のタイムゾーン(アジア/上海など)の下で日付と時刻のUnixタイムスタンプを計算します。
<?php
// ターゲットタイムゾーン
$timezone = new DateTimeZone('Asia/Shanghai');
// タイムゾーン名を取得します
$timezone_name = timezone_name_get($timezone);
echo "ターゲットタイムゾーン: " . $timezone_name . "\n";
// 作成する DateTime オブジェクトと特定の時間に設定します
$date = new DateTime('2025-06-12 14:30:00', $timezone);
// 使用 mktime 関数はそれを変換します Unix タイムスタンプ
$timestamp = mktime($date->format('H'), $date->format('i'), $date->format('s'),
$date->format('m'), $date->format('d'), $date->format('Y'));
echo "対応する Unix タイムスタンプ: " . $timestamp . "\n";
?>
DateTimeZoneオブジェクトの作成:最初にターゲットタイムゾーン(アジア/上海など)を指定します。
タイムゾーン名を取得:タイムゾーン名を取得し、 TimeZone_Name_Getを介して出力します。
DateTimeオブジェクトの作成: DateTimeオブジェクトのコンストラクターは、日付時間文字列とタイムゾーンオブジェクトを受け入れます。このオブジェクトに目標時間(2025年6月12日に14:30:00)を設定します。
MKTIMEを使用してUNIXタイムスタンプを計算します。DateTimeオブジェクトから時間、分、2番目、月、日、および年を抽出し、 MKTIME関数に渡し、最終的にUNIXタイムスタンプを取得します。
TimeZone_name_getとmktime関数を組み合わせることにより、特定のタイムゾーンでUnixタイムスタンプを簡単に計算できます。これらのスキルを習得すると、特にクロスタイムゾーンアプリケーションで、タイムゾーンに関連する時間計算をより正確に処理できます。