<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// コードの例のこのセクションは、すべてのタイムゾーンの略語情報を取得する方法を示しています,デフォルトのタイムゾーンを設定します。</span></span><span>
</span><span><span class="hljs-comment">// 記事のメインテキストとは何の関係もありません,デモンストレーションのみ。</span></span><span>
</span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_abbreviations_list</span></span><span>();
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$timezones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$abbr</span></span><span> => </span><span><span class="hljs-variable">$zones</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"略語: <span class="hljs-subst">$abbr</span></span></span><span>\n";
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$zones</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$zone</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">" - タイムゾーンID: "</span></span><span> . </span><span><span class="hljs-variable">$zone</span></span><span>[</span><span><span class="hljs-string">'timezone_id'</span></span><span>] . </span><span><span class="hljs-string">", 偏移秒数: "</span></span><span> . </span><span><span class="hljs-variable">$zone</span></span><span>[</span><span><span class="hljs-string">'offset'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
}
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"当前默认タイムゾーン: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
---
</span><span><span class="hljs-comment"># 方法timezone_abbreviations_list関数とdate_default_timezone_set函数配合使用实现タイムゾーン管理?</span></span><span>
存在するPHP真ん中,タイムゾーン管理对于处理时间そして日期非常关键,特别是存在する跨タイムゾーン应用场景真ん中。PHP2つの重要な機能が提供されます——`</span><span><span class="hljs-title function_ invoke__">timezone_abbreviations_list</span></span><span>()` そして `</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>()`,それらは1つ緒に使用できます,实现灵活且准确的タイムゾーン管理。
</span><span><span class="hljs-comment">## 1つ、timezone_abbreviations_list関数の紹介</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">timezone_abbreviations_list</span></span><span>()` 函数返回1つ个数组,列出了所有タイムゾーン略語及其对应的详细信息。アレイの構造はほぼ次のとおりです:
```php
[
</span><span><span class="hljs-string">"abbr"</span></span><span> => [
[
</span><span><span class="hljs-string">"offset"</span></span><span> => 偏移秒数,
</span><span><span class="hljs-string">"dst"</span></span><span> => それが夏時間であるかどうか(ブール値),
</span><span><span class="hljs-string">"timezone_id"</span></span><span> => タイムゾーン标识符字符串
],
...
],
...
]
</span></span>
この機能は、開発者がタイムゾーンの標準の略語、オフセット、および対応するタイムゾーンIDを取得できるため、非常に便利です。これにより、その後のタイムゾーンの切り替えと表示が容易になります。
date_default_timezone_set(string $ timezoneid)は、PHPランニング環境のデフォルトタイムゾーンを設定するために使用されます。設定後、 date() 、 time()などのすべての時間関連関数は、このデフォルトタイムゾーンを使用して時間を処理します。
例:
<span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>); </span><span><span class="hljs-comment">// 上海時間の輸出</span></span><span>
</span></span>
要件があり、ユーザーがタイムゾーンの略語(「CST」など)に合格し、この略語に従って対応するタイムゾーンに自動的に切り替えるために、時間を均一に計算して表示するとします。
timezone_abbreviations_list()を介して、すべてのタイムゾーンの略語に対応するデータを取得します。
ターゲットの略語に対応するタイムゾーンのリストを見つけます(1つの略語が複数のタイムゾーンに対応する場合があります)。
適切なタイムゾーン識別子を選択します(たとえば、オフセットはユーザーのニーズ、または最初にデフォルトのニーズに最も適しています)。
date_default_timezone_set()を使用して、PHPタイムゾーンをそのタイムゾーンに設定します。
時間を取得して表示します。
サンプルコード:
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">setTimezoneByAbbr</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$abbr</span></span></span><span>) {
</span><span><span class="hljs-variable">$abbr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$abbr</span></span><span>);
</span><span><span class="hljs-variable">$timezones</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_abbreviations_list</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$timezones</span></span><span>[</span><span><span class="hljs-variable">$abbr</span></span><span>])) {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"タイムゾーン略語 '<span class="hljs-subst">{$abbr}</span></span></span><span>' 不存存在する");
}
</span><span><span class="hljs-comment">// 这里默认选第1つ个タイムゾーン,必要に応じて,オフセットまたはその他の条件に基づいてフィルタリングできます</span></span><span>
</span><span><span class="hljs-variable">$zone</span></span><span> = </span><span><span class="hljs-variable">$timezones</span></span><span>[</span><span><span class="hljs-variable">$abbr</span></span><span>][</span><span><span class="hljs-number">0</span></span><span>];
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$zone</span></span><span>[</span><span><span class="hljs-string">'timezone_id'</span></span><span>])) {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"タイムゾーンID無効"</span></span><span>);
}
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-variable">$zone</span></span><span>[</span><span><span class="hljs-string">'timezone_id'</span></span><span>]);
}
</span><span><span class="hljs-comment">// 例:に切り替えますCSTタイムゾーン</span></span><span>
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">setTimezoneByAbbr</span></span><span>(</span><span><span class="hljs-string">'CST'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在の時刻:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>) . </span><span><span class="hljs-string">",タイムゾーン:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"間違い:"</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>
一部の略語は、複数のタイムゾーン(CSTなどの中国の標準時間、中央アメリカ時間など)に対応しており、特定のシナリオに従って適切なタイムゾーンIDを選択する必要があります。
あいまいさを避けるために、略語の代わりにタイムゾーン識別子(アジア/上海、アメリカ/シカゴなど)を使用することをお勧めします。
この関数は、ユーザーの国または地域の情報に基づいて、最も適切なタイムゾーンと動的に一致するように拡張できます。
timezone_abbreviations_list()およびdate_default_timezone_set()は、PHPでのタイムゾーン処理のコアツールです。前者は詳細なタイムゾーンの略語と対応する識別子を取得し、後者はデフォルトのタイムゾーンを柔軟に設定します。デフォルトのタイムゾーンは、マルチタイムゾーンアプリケーションのニーズを満たすために効率的かつ正確なタイムゾーン管理を実現できます。
<span></span>