시간 의존적 작업에 PHP를 사용하는 경우 Timezone_name_get () 함수를 사용하여 DateTimezone 객체의 시간대 이름을 얻을 수 있습니다. 그러나 경우에 따라이 함수는 False를 반환하여 프로그램이 시간대 정보를 올바르게 처리하지 못하게 할 수 있습니다. 이 기사는 Timezone_name_get 이 False를 반환하여 프로그램의 견고성과 정확성을 보장 할 때 개발자 가이 상황을 효과적으로 처리하는 데 사용할 수있는 대안을 탐색합니다.
첫째, 일반적으로 들어오는 DateTimezone 객체 에 유효한 시간대 이름 이 없거나 객체가 올바르게 초기화되지 않기 때문입니다. 예를 들어, 오류 또는 존재하지 않는 시간대 식별자가 사용되거나 DateTimeZone 객체 인스턴스가 실수로 손상되었습니다.
<?php
$timezone = new DateTimeZone('Invalid/Timezone');
echo timezone_name_get($timezone); // 돌아올 수 있습니다 false
?>
PHP 8.1에서 시작하여 DateTimezone 클래스는 getName () 메소드를 추가하여 시간대 이름을 직접 얻을 수 있으며 timezone_name_get () 보다 객체 지향적입니다. 먼저 반환 값이 유효한지 확인한 다음이 메소드를 사용할 수 있습니다.
<?php
$timezone = new DateTimeZone('Asia/Shanghai');
$name = $timezone->getName();
if ($name === false || $name === null) {
// 유효하지 않은 상황을 처리합니다
$name = 'UTC'; // 대체 기본 시간대
}
echo $name;
?>
DateTimezone 객체를 인스턴스화 할 때 예외 캡처 메커니즘을 사용하여 유효하지 않은 시간 영역을 피하여 후속 기능이 오류를 반환 할 수 있습니다.
<?php
try {
$timezone = new DateTimeZone('Invalid/Timezone');
} catch (Exception $e) {
// 기본 시간대 교체를 사용하십시오
$timezone = new DateTimeZone('UTC');
}
echo timezone_name_get($timezone);
?>
이 방법을 사용하면 Timezone_name_get ()가 호출 될 때 유효한 시간대 이름을 얻을 수 있습니다.
DateTimezone 에서 시간대 이름을 직접 얻을 수없는 경우, 시간대 약어 또는 오프셋은 DateTime 객체의 형식 기능을 사용하여 대체 정보로 얻을 수 있습니다.
<?php
$timezone = new DateTimeZone('Invalid/Timezone');
try {
$datetime = new DateTime('now', $timezone);
} catch (Exception $e) {
$datetime = new DateTime('now', new DateTimeZone('UTC'));
}
// 시간대 약어를 얻으십시오,예를 들어 CST、PST
echo $datetime->format('T');
// 또는 시간대 오프셋을 얻으십시오,예를 들어 +0800
echo $datetime->format('O');
?>
불확실한 원점의 많은 시간대 구역 문자열이 프로그램에 관여하는 경우 시간대 매핑 테이블을 미리 유지하는 것이 좋습니다. 유효하지 않은 시간대 이름을 확인하고 교체하는 것이 좋습니다. Timezone_name_get을 호출 할 때 거짓을 피합니다.
<?php
$validTimezones = timezone_identifiers_list();
$inputTimezone = 'Invalid/Timezone';
if (!in_array($inputTimezone, $validTimezones)) {
$inputTimezone = 'UTC'; // 기본 시간대를 설정하십시오
}
$timezone = new DateTimeZone($inputTimezone);
echo timezone_name_get($timezone);
?>
timezone_name_get ()가 false를 반환 할 때 가장 근본적인 문제는 TimeZone 객체가 잘못되었거나 TimeZone 이름이 유효하지 않다는 것입니다. 이 문제는 새로운 객체 지향 메소드를 사용하여 예외 처리, DateTime 과 출력을 형식화하고 시간대 목록을 유지 관리하여 효과적으로 피할 수 있습니다. 특정 시나리오를 기반으로 합리적인 대안을 선택하면 프로그램의 견고성과 사용자 경험이 향상 될 수 있습니다.