現在の位置: ホーム> 最新記事一覧> TimeZone_Identifiers_ListとDateTime :: SetimeZoneを組み合わせて、DateTime Time Zoneを変更します

TimeZone_Identifiers_ListとDateTime :: SetimeZoneを組み合わせて、DateTime Time Zoneを変更します

gitbox 2025-05-31

1. TimeZone_Identifiers_Listを理解します

TimeZone_Identifiers_Listは、利用可能なすべてのタイムゾーン識別子を取得するためのPHP組み込み関数です。その使用法は非常に簡単です:

 <?php
$timezones = timezone_identifiers_list();
foreach ($timezones as $timezone) {
    echo $timezone . PHP_EOL;
}
?>

このコードは、アジア/上海ヨーロッパ/ロンドンアメリカ/new_yorkなど、PHPでサポートされているすべてのタイムゾーン名を出力します。


2。DateTimeオブジェクトを作成し、初期タイムゾーンを設定します

DateTimeクラスは、日付と時刻のオブジェクトを作成できます。デフォルトでは、タイムゾーンが指定されていない場合、サーバーのデフォルトタイムゾーンが使用されます。作成時にタイムゾーンオブジェクトを渡すこともできます。

 <?php
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:s T') . PHP_EOL;
?>

このコードは出力されます: 2025-05-31 15:00:00 UTC


3。settimezoneメソッドを使用してタイムゾーンを変更します

上記の時間を中国の上海時間に変換したい場合は、 SetimeZoneメソッドを使用して実装できます。

 <?php
$date->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $date->format('Y-m-d H:i:s T') . PHP_EOL;
?>

出力の結果は、 2025-05-31 23:00:00 CST 、つまり、対応する北京時間になります。


4。TimeZone_Identifiers_ListSettimeZoneを組み合わせてTimeZoneを動的に設定する

時には、すべてのタイムゾーンのリストからユーザーに1つを選択してもらい、プログラムが選択に応じて時間を調整したい場合があります。サンプルコードは次のとおりです。

 <?php
// すべてのタイムゾーンを取得します
$timezones = timezone_identifiers_list();

// ユーザーが選択したタイムゾーンがあると仮定します 'Europe/London'
$userSelectedTimezone = 'Europe/London';

// 最初に1つを作成しますUTC時間DateTime物体
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));

// ユーザーが選択したタイムゾーンが有効であることを確認します
if (in_array($userSelectedTimezone, $timezones)) {
    $date->setTimezone(new DateTimeZone($userSelectedTimezone));
    echo "ユーザーが選択した時間です:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
    echo "無効なタイムゾーンの選択!" . PHP_EOL;
}
?>

ユーザーが入力したタイムゾーンが無効である場合、エラーをプロンプトすることができます。有効な場合、調整された時間が正しく表示されます。


5。統合を完了します

タイムゾーンリストを取得し、ユーザー選択後の時間を変換する方法を示す完全な例を次に示します。

 <?php
// すべてのタイムゾーンを取得します
$timezones = timezone_identifiers_list();

// ユーザー選択タイムゾーンをシミュレートします(フォーム入力に置き換えることができます)
$userSelectedTimezone = 'gitbox.net/Europe/London';

// ドメイン名パーツを削除します,タイムゾーン識別子のみが保持されます
$parsedTimezone = str_replace('gitbox.net/', '', $userSelectedTimezone);

// 创建時間物体,デフォルトUTC時間
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));

if (in_array($parsedTimezone, $timezones)) {
    $date->setTimezone(new DateTimeZone($parsedTimezone));
    echo "ユーザーが選択した時間です:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
    echo "無効なタイムゾーンの選択!" . PHP_EOL;
}
?>

上記の手順を通じて、 timezone_identifiers_listdatetime :: setimezoneメソッドを柔軟に組み合わせて、要件に応じて日付と時刻の時間を動的に変更できます。