PHP 8.4: Intl: Новая функция intltz_get_iana_id и метод IntlTimeZone::getIanaID
intltz_get_iana_id
и новый статический метод IntlTimeZone::getIanaID()
в классе IntlTimeZone, возвращающий идентификатор часового пояса IANA для переданного идентификатора часового пояса.В большинстве ситуаций возвращаемое значение совпадает с переданным идентификатором часового пояса. Однако в ситуациях, когда данный идентификатор часового пояса устарел или заменён другим идентификатором часового пояса, новая функция/метод поможет канонизировать идентификатор часового пояса.
Например, часовой пояс для Кипра, Asia/Nicosia
, иногда используется как Europe/Nicosia
. Новая функция intltz_get_iana_id
и метод IntlTimeZone::getIanaID()
обеспечивают простой способ поиска подобных несоответствий и получения правильного идентификатора IANA для часового пояса.
Список изменённых идентификаторов часовых поясов см. в IANA tzdata/backward.
intltz_get_iana_id('Europe/Berlin'); // Валидный, возвращается тот же
// "Europe/Berlin"
IntlTimeZone::getIanaID('America/New_York'); // Валидный, возвращается тот же
// "America/New_York"
intltz_get_iana_id('Mars'); // Невалидный, возвращается false
// false
intltz_get_iana_id('Europe/Nicosia'); // Возвращается Asia/Nicosia
// "Asia/Nicosia"
IntlTimeZone::getIanaID('Asia/Chongqing'); // Дублирует существующую локацию
// "Asia/Shanghai"
Синопсис функции intltz_get_iana_id
/**
* Get the IANA identifier from a given timezone
* @param string $timezoneId
* @return string|false
*/
function intltz_get_iana_id(string $timezoneId): string|false {}
intltz_get_iana_id
объявлен в глобальном пространстве имён.- При передаче невалидного ID часового пояса возвращается
false
. - См. также:
intltz_get_canonical_id
, который похож, но возвращает системный канонический ID часового пояса, совпадающий (но не полностью) со списком часовых поясов IANA.
Синопсис метода IntlTimeZone::getIanaID()
class IntlTimeZone {
// ...
/**
* Get the IANA identifier from a given timezone
* @param string $timezoneId
* @return string|false
*/
public static function getIanaID(string $timezoneId): string|false {}
// ...
}
- Новый метод
getIanaID
являетсяstatic
методом. - Псевдоним функции
intltz_get_iana_id
. - При передаче недопустимого ID часового пояса возвращается
false
. - См. также:
IntlTimeZone::getCanonicalID
, который похож, но возвращает системный канонический идентификатор часового пояса, совпадающий (но не полностью) со списком часовых поясов IANA.
Влияние на обратную совместимость
Новая функция intltz_get_iana_id
объявлена в глобальном пространстве имён, и если PHP приложение не объявит функцию с идентичным именем, это не должно вызвать проблем с обратной совместимостью.
PHP классы, расширяющие IntlTimeZone
без реализации несовместимого метода getIanaID
, также не будут испытывать проблем с обратной совместимостью.
Данные об идентификаторах часовых поясов IANA поступают из библиотеки ICU. Можно использовать полифилл функции intltz_get_iana_id
в пользовательском PHP, жёстко закодировав идентификаторы часовых поясов, которые должны быть "канонизированы". Однако это может быть ненадёжно и требует дополнительного сопровождения для поддержания этого списка в актуальном состоянии.