PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのtimezone_abbreviations_list()関数の使い方と実行例を解説

timezone_abbreviations_list() 関数は、夏時間(DST)の適用状況、UTC からのオフセット(秒)、タイムゾーン ID を含む連想配列を返します。PHP が認識しているすべてのタイムゾーン略称の情報を一度に取得したい場合に便利な関数です。

構文

timezone_abbreviations_list()

パラメータ

  • なし:この関数は引数を受け取りません。

戻り値

成功した場合はタイムゾーン情報を含む配列を、失敗した場合は FALSE を返します。

使用例

次の例では、手続き型の timezone_abbreviations_list() と、同じ機能を持つオブジェクト指向インターフェース DateTimeZone::listAbbreviations() の両方を使って、略称「acst」のタイムゾーン情報を取得しています。

<?php
$timezone_abbreviations = timezone_abbreviations_list();
print_r($timezone_abbreviations["acst"]);
echo "----------------------------------------------\n";
# DateTimeZone クラスのメソッドを使用
$timezone_abbreviations = DateTimeZone::listAbbreviations();
print_r($timezone_abbreviations["acst"]);
?>

出力結果

Array (
    [0] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Porto_Acre
    )
    [1] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Adelaide
    )
    [2] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Adelaide
    )
    [3] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Eirunepe
    )
    [4] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Rio_Branco
    )
    [5] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => Brazil/Acre
    )
    [6] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Broken_Hill
    )
    [7] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Darwin
    )
    [8] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/North
    )
    [9] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/South
    )
    [10] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Yancowinna
    )
    [11] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Asia/Jayapura
    )
    [12] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Broken_Hill
    )
    [13] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Darwin
    )
    [14] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/North
    )
    [15] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/South
    )
    [16] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Yancowinna
    )
)
----------------------------------------------
Array (
    [0] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Porto_Acre
    )
    [1] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Adelaide
    )
    [2] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Adelaide
    )
    [3] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Eirunepe
    )
    [4] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => America/Rio_Branco
    )
    [5] => Array (
        [dst] => 1
        [offset] => -14400
        [timezone_id] => Brazil/Acre
    )
    [6] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Broken_Hill
    )
    [7] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Darwin
    )
    [8] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/North
    )
    [9] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/South
    )
    [10] => Array (
        [dst] =>
        [offset] => 32400
        [timezone_id] => Australia/Yancowinna
    )
    [11] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Asia/Jayapura
    )
    [12] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Broken_Hill
    )
    [13] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Darwin
    )
    [14] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/North
    )
    [15] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/South
    )
    [16] => Array (
        [dst] =>
        [offset] => 34200
        [timezone_id] => Australia/Yancowinna
    )
)

出力から分かるように、1 つの略称には複数のタイムゾーンが関連付けられていることがあります。各エントリのキーの意味は次のとおりです。

  • dst:夏時間(DST)が適用されているかどうか(1 = 適用あり、空 = 適用なし)

  • offset:UTC からのオフセット秒数(たとえば 32400 秒は +9 時間、-14400 秒は -4 時間を表します)

  • timezone_id:対応するタイムゾーン ID

また、2 つの出力がまったく同一であることから、timezone_abbreviations_list()DateTimeZone::listAbbreviations() が同等の機能を提供していることも確認できます。

別の使用例

続いて、別の略称「act」で試してみましょう。

<?php
$res = timezone_abbreviations_list();
print_r($res["act"]);
?>

出力結果

Array
(
    [0] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Porto_Acre
    )

    [1] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Eirunepe
    )

    [2] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => America/Rio_Branco
    )

    [3] => Array
    (
        [dst] =>
        [offset] => -18000
        [timezone_id] => Brazil/Acre
    )
)

まとめ

timezone_abbreviations_list() を使えば、PHP がサポートするタイムゾーン略称ごとに、UTC からのオフセット、DST の適用状況、対応するタイムゾーン ID を一括して取得できます。「acst」や「act」のように、同じ略称が複数の地域のタイムゾーンに割り当てられているケースもあるため、実際に利用する際は用途に合ったタイムゾーン ID を選択することが大切です。

  1. 【PHP】array_rand()関数の使い方|配列からランダムなキーを取得する方法

    array_rand() 関数は、配列から1つ以上のランダムなキーを取得するためのPHP組み込み関数です。配列の中から要素を無作為に選びたい場合に便利で、くじ引きやシャッフル表示などの実装によく使われます。 基本構文 array_rand(array $array, int $num = 1) パラメータ arr(第1引数):対象となる配列を指定します。 count(第2引数):取得したいランダムキーの数を指定します。省略した場合はデフォルト値の 1 が適用されます。 戻り値 array_rand() 関数は、選択されたランダムなキーを返します。 第2引数が 1 の場合(または省略した場

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に