PHP로 개발할 때 Timezone_open () 함수는 지정된 시간대를 얻는 데 사용되는 객체이며, 이는 크로스 타임 영역 응용 프로그램을 처리 할 때 매우 유용합니다. 그러나 실제 응용 분야에서는 종종 시간대 스트링 오류가 발생하여 시간 영역 객체를 정상적으로 얻을 수 없어 시간 관련 작업에 영향을 줄 수 있습니다. 이 기사는 몇 가지 일반적인 오류와 해당 솔루션을 분석합니다.
시간대 스트링의 올바른 형식은 아시아/상하이 또는 유럽/런던 과 같은 지역/도시 형식입니다. 그러나 여러 번 개발자는 실수로 불법 타임 존 문자열 형식을 사용하여 Timezone_open () 가 실패 할 수 있습니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Shanghai'</span></span><span>); </span><span><span class="hljs-comment">// 실수:잘못된 형식</span></span><span>
</span></span>
시간대 문자열이 지역/도시 형식을 따르십시오. 올바른 시간대 이름에 대해 확실하지 않은 경우 PHP 시간대 목록을 참조하십시오. 다음은 올바른 예입니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>); </span><span><span class="hljs-comment">// 옳은</span></span><span>
</span></span>
시간대 이름은 사례에 민감하며 잘못된 경우도 오류로 이어질 수 있습니다. 예를 들어, 아시아/상하이 및 아시아/상하이는 다른 시간대로 간주됩니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/shanghai'</span></span><span>); </span><span><span class="hljs-comment">// 실수:사례 불일치</span></span><span>
</span></span>
Time Zone 문자열의 지역 및 도시 이름은 올바른 경우에 보관되어야하므로 형식과 문자가 정확히 일치하도록합니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>); </span><span><span class="hljs-comment">// 옳은</span></span><span>
</span></span>
PHP는 수백 개의 시간대를 지원하지만 모든 문자열이 유효하지는 않습니다. 유효하지 않은 Timezone 문자열을 사용하려고하면 Timezone_open () 이 false를 반환합니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/UnknownCity'</span></span><span>); </span><span><span class="hljs-comment">// 실수:잘못된 시간대</span></span><span>
</span></span>
Timezone 문자열을 사용하는 경우 먼저 Timezone_Indifiers_List () 를 통해 지원되는 모든 시간대 이름을 얻은 다음 올바른 시간대를 선택할 수 있습니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Asia/Kolkata'</span></span><span>); </span><span><span class="hljs-comment">// 옳은</span></span><span>
</span></span>
일부 개발자는 시간대 이름을 동적으로 생성 할 때 시간대 문자열을 전체 지정하는 것을 잊을 수 있습니다. 이것은 일반적으로 시간대 정보가 사용자 입력 또는 데이터베이스에서 추출 될 때 발생합니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">''</span></span><span>); </span><span><span class="hljs-comment">// 실수:시간대 이름이 비어 있습니다</span></span><span>
</span></span>
TimeZone 문자열이 비어 있지 않도록하려면 Timezone_open ()을 호출하기 전에 확인할 수 있습니다.
<span><span><span class="hljs-variable">$timezone_string</span></span><span> = </span><span><span class="hljs-string">'Asia/Shanghai'</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">$timezone_string</span></span><span>)) {
</span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-variable">$timezone_string</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"시간대는 비어있을 수 없습니다!"</span></span><span>;
}
</span></span>
timezone_open () 가 false를 반환하고 개발자가 오류를 처리하지 않으면 특히 복잡한 시간 계산에서 후속 코드에서 문제가 발생할 수 있습니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Europe/Paris'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getName</span></span><span>(); </span><span><span class="hljs-comment">// 만약에 $timezone ~을 위한 false,이 방법을 호출하면 오류가보고됩니다</span></span><span>
</span></span>
timezone_open ()에 의해 반환 된 값이 유효한지 항상 확인하고 메소드를 직접 호출하지 마십시오.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'Europe/Paris'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$timezone</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$timezone</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getName</span></span><span>(); </span><span><span class="hljs-comment">// 정상적인 사용</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"잘못된 시간대 이름!"</span></span><span>;
}
</span></span>
PHP는 기본적으로 Iana Time Zone 데이터베이스 (Olson Time Zone 데이터베이스라고도 함)를 사용합니다. 일부 환경에서 비표준 타임 존 라이브러리를 사용하는 경우 시간대 식별 문제가 발생할 수 있습니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'US/Eastern'</span></span><span>); </span><span><span class="hljs-comment">// 오류가있을 수 있습니다,시스템 시간대 구성에 따라 다릅니다</span></span><span>
</span></span>
서버의 시간대 구성이 PHP에 사용되는 시간대와 호환되는지 확인하십시오. PHP 기본 시간대 라이브러리를 사용할 수없는 경우 PHP 업그레이드 또는 시스템의 시간대 설정 수정을 고려할 수 있습니다.
경우에 따라 시스템 시간대 및 PHP 시간 영역 구성이 일관성이 없으므로 Timezone_open () 이 오류 결과를 반환합니다. 일반적으로 PHP의 기본 시간대가 올바르게 설정되지 않기 때문입니다.
<span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'America/New_York'</span></span><span>); </span><span><span class="hljs-comment">// 可能返回실수</span></span><span>
</span></span>
PHP 시간대 설정이 시스템 시간대와 일치하는지 확인하십시오. PHP에서 기본 시간대는 date_default_timezone_set () 를 통해 설정할 수 있습니다.
<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-comment">// 设置~을 위한上海时区</span></span><span>
</span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_open</span></span><span>(</span><span><span class="hljs-string">'America/New_York'</span></span><span>); </span><span><span class="hljs-comment">// 정상적인 사용</span></span><span>
</span></span>
TimeZone 문자열은 교차 시간 영역 응용 분야의 핵심입니다. Timezone_open ()을 사용하는 경우 TimeZone 이름의 정확성에 특별한주의를 기울여야합니다. 시간대 문자열이 올바르게 형식화되도록함으로써 케이스 일치, 시간대가 유효하며 오류가 코드에서 적절하게 처리되면 시간대는 효과적으로 피할 수 있습니다. 이 기사가 Timezone_open () 의 사용을 더 잘 이해하고 일반적인 실수를 피하는 데 도움이되기를 바랍니다.