PHPでは、 TimeZone_Abbreviations_List()関数を使用して、現在のタイムゾーンのすべてのタイムゾーンの略語を取得します。この関数は、各タイムゾーン情報に1つ以上のタイムゾーンの略語が含まれるタイムゾーン情報の配列を返します。場合によっては、返されたタイムゾーンの略語リストが複製され、問題が発生します。それで、なぜこれが起こるのですか?タイムゾーンの略語の一意のリストを容易にし、取得する方法は?
同じタイムゾーンに複数の略語がある場合があります<br> タイムゾーンには、複数の異なる略語がある場合があります。たとえば、「PST」(太平洋標準時間)と「PDT」(太平洋の夏時間)は実際に同じタイムゾーンを指します。違いは、異なる季節に使用されていることです。各timezone_abbreviations_list()について、そのタイムゾーンに関連するすべての略語を返すため、結果に同様の複製の略語が表示される場合があります。
歴史的な理由<br> タイムゾーンの略語には長い歴史があり、タイムゾーンの略語ルールは場所によって異なる場合があります。異なる地域での標準時間は、特に夏時間と標準時間の切り替えで、同じ略語を使用する場合があります。たとえば、「CST」は、米国の中国の標準時間または中央標準時間を表す可能性があるため、同じ略語が異なる時間帯で現れる可能性があります。
タイムゾーンの変更と夏時間の節約<br> 夏時間の実装とキャンセルにより、特定のタイムゾーンで複数の略語が表示される可能性があります。たとえば、ニューヨークのタイムゾーンの略語は、シーズンが変わるにつれて「EST」(East Standard Time)から「EDT」(East Daylight Saving Time)に切り替えます。したがって、同じ地域でさえ、異なる時点で戻った略語は異なります。
タイムゾーンの略語の複製の問題を解決するために、PHPのいくつかの基本的な関数を使用して、それを推定して、最終的な取得タイムゾーンの略語リストの各略語が一意であることを確認できます。
TimeZone_abbreviations_list()を使用する方法を示す簡単なPHPコードの例を示します。
<?php
// タイムゾーンの略語のリストを取得します
$timezone_abbreviations = timezone_abbreviations_list();
// ユニークなタイムゾーンの略語を保存する配列を作成します
$unique_abbreviations = [];
// タイムゾーンの略語リストを繰り返します,重いものに行きます
foreach ($timezone_abbreviations as $region => $abbreviations) {
foreach ($abbreviations as $abbreviation) {
$unique_abbreviations[$abbreviation['abbr']] = $abbreviation;
}
}
// 输出重いものに行きます后的时区缩写列表
foreach ($unique_abbreviations as $abbreviation) {
echo $abbreviation['abbr'] . " - " . $abbreviation['offset'] . "<br>";
}
?>
このコードでは、最初にtimezone_abbreviations_list()を呼び出して、すべてのTimezoneの略語情報を取得します。次に、連想配列$ sinque_abbreviationsを使用して、略語がキーとして使用される各タイムゾーンの略語を保存します。配列のキーは一意であるため、重複した略語は自動的に上書きされるため、重複排除の効果を達成します。
このようにして、結果のタイムゾーンの略語リストに重複した値がないことを確認できます。
TimeZone_abbreviations_list()関数は、主に同じタイムゾーンで複数の異なる略語がある可能性があるため、または歴史的および夏時間の節約により、略語が複製されるため、タイムゾーンの略語を返すときに値を重複させる可能性があります。シンプルなPHPコードを使用すると、これらの複製タイムゾーンの略語を簡単に削除でき、取得したタイムゾーンの略語リストが一意になるようにします。