<span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"XYZ"</span></span><span>); </span><span><span class="hljs-comment">// false</span></span><span>
</span></span>
略語のスペルを確認するか、PHPが提供するdatetimezone :: listabbreviations()を使用することをお勧めします。
あいまいさですが、オフセットは提供されません<br> たとえば、 「CST」は中央アメリカと中国の両方の標準時間に対応しています。 $ gmtoffsetが不明な場合、関数がfalseを返す場合があります。
夏時間のパラメーターの不一致
$ ISDSTパラメーターが実際の状況と一致しない場合、機能が正しいタイムゾーンと一致しないこともあります。
PHPバージョンまたはタイムゾーンデータベースの違い<br> 異なるPHPバージョンには、異なる略語サポートがある場合があります。 Falseが返された場合、PHP TimeZoneデータベースが最新かどうかも確認する必要があります。
<span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-title class_">DateTimeZone</span></span><span>::</span><span><span class="hljs-title function_ invoke__">listAbbreviations</span></span><span>());
</span></span>
出力は、使用された略語が存在するかどうか、および対応するオフセットを確認できます。
<span><span><span class="hljs-variable">$tz</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"CST"</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>*</span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// 対応する Asia/Shanghai</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$tz</span></span><span>; </span><span><span class="hljs-comment">// 出力 "Asia/Shanghai"</span></span><span>
</span></span>
あいまいさを避けるためにオフセットを使用します。
<span><span><span class="hljs-variable">$tz</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"EST"</span></span><span>, -</span><span><span class="hljs-number">5</span></span><span>*</span><span><span class="hljs-number">3600</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 夏時間の考慮事項</span></span><span>
</span></span>
夏時間が存在する場合、 1を通過しようとすると、正しい結果が得られる場合があります。
略語の一致が不安定な場合は、フルタイムゾーン名を直接使用できます。
<span><span><span class="hljs-variable">$dtz</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</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-variable">$dtz</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getName</span></span><span>();
</span></span>
<span><span>php -r </span><span><span class="hljs-string">'echo timezone_version_get();'</span></span><span>
</span></span>
タイムゾーンデータベースが最新の状態に更新されていることを確認し、認識されていない略語を避けてください。