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 を選択することが大切です。
-
【PHP】array_rand()関数の使い方|配列からランダムなキーを取得する方法
array_rand() 関数は、配列から1つ以上のランダムなキーを取得するためのPHP組み込み関数です。配列の中から要素を無作為に選びたい場合に便利で、くじ引きやシャッフル表示などの実装によく使われます。 基本構文 array_rand(array $array, int $num = 1) パラメータ arr(第1引数):対象となる配列を指定します。 count(第2引数):取得したいランダムキーの数を指定します。省略した場合はデフォルト値の 1 が適用されます。 戻り値 array_rand() 関数は、選択されたランダムなキーを返します。 第2引数が 1 の場合(または省略した場
-
PHPのarray()関数とは?配列の作成方法をわかりやすく解説
PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に