<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不明確,函數可能返回fals e
考慮夏令時的參數不匹配
$isDST參數如果與實際情況不符,也可能導致函數無法匹配正確時區。
PHP 版本或時區數據庫差異<br> 不同PHP 版本可能對縮寫支持有所不同,如果返回fals e ,也要確認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>確保時區數據庫更新至最新,避免某些縮寫無法識別。