현재 위치: > 최신 기사 목록> timezone_name_from_abbr 문제를 해결하는 방법은 거짓으로 돌아 갑니까? 실제 디버깅 기술에 대한 완전한 요약

timezone_name_from_abbr 문제를 해결하는 방법은 거짓으로 돌아 갑니까? 실제 디버깅 기술에 대한 완전한 요약

gitbox 2025-09-04

2. 거짓을 반환하는 일반적인 이유

  1.  <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 ()를 사용하는 것이 좋습니다.

  2. 모호성이지만 오프셋은 제공되지 않습니다 <br> 예를 들어, "CST"는 중앙 아메리카 및 중국 표준 시간에 해당합니다. $ gmtoffset 이 불분명하면 함수가 False를 반환 할 수 있습니다.

  3. 일광 절약 시간의 매개 변수 불일치
    $ isdst 매개 변수가 실제 상황과 일치하지 않으면 기능이 올바른 시간대와 일치하지 않을 수도 있습니다.

  4. PHP 버전 또는 시간대 데이터베이스 차이 <br> 다른 PHP 버전은 다른 약어 지원을 가질 수 있습니다. False가 반환되면 PHP Timezone 데이터베이스가 최신 상태인지 확인해야합니다.


3. 실용적 디버깅 기술

1. 사용 가능한 약어 목록을 인쇄하십시오

 <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>

출력은 사용 된 약어가 존재하는지 여부와 해당 오프셋을 확인할 수 있습니다.

2. GMT 오프셋을 명확하게 통과하십시오

 <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>

모호성을 피하기 위해 오프셋을 사용하십시오.

3. 다른 $ isdst 매개 변수를 시도하십시오

 <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을 통과하려고하면 올바른 결과가 발생할 수 있습니다.

4. DateTimezone을 사용하여 교체하십시오

약어 매치가 불안정하면 풀 타임 존 이름을 직접 사용할 수 있습니다.

 <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>-&gt;</span><span><span class="hljs-title function_ invoke__">getName</span></span><span>();
</span></span>

5. PHP 버전 및 시간대 데이터베이스를 확인하십시오

 <span><span>php -r </span><span><span class="hljs-string">'echo timezone_version_get();'</span></span><span>
</span></span>

시간대 데이터베이스가 최신으로 업데이트되었는지 확인하고 일부 약어가 인식되지 않도록하십시오.