PHP проверить является ли строка временной зоной timezone - все временные зоны список - функция пример
Primary tabs
"Все" временные зоны
На данный момент максимальный список поддерживаемых временных зон (подразумевают те, что проходят такую проверку) можно получить вызовом функции:
// получаем массив временных зон (в т.ч. обратно совместимые) $tarr = timezone_identifiers_list(DateTimeZone::ALL_WITH_BC);
Для данной функции можно выполнить такую проверку:
$tarr = ['MSK', 'PKT', 'UTC', 'WET', 'EET', 'CET']; foreach ($tarr as $val){ if (is_timezone($val)){ echo 'yes'; } else echo 'no'; echo '< br >'; } function is_timezone($str){ return in_array($str, timezone_identifiers_list(DateTimeZone::ALL_WITH_BC)); }
получим:
no no yes yes yes yes
(сравните результаты со случаем приведённым ниже)
Не все зоны
Для определения того, что данная строка является поддерживаемой PHP таймзоной можно использовать такую функцию:
/** * проверит является ли переданная строка поддерживаемой * времнной зоной - предайте DateTimeZone::ALL_WITH_BC чтобы * лля полого сравнения * * @param type $str * @return type boolaen */ function is_timezone($str){ return in_array($str, timezone_identifiers_list()); }
Скрипт проверки, приведённый выше даст такой результат (без DateTimeZone::ALL_WITH_BC):
no no yes no no no
получим (у меня получилось так):
no no yes
то есть из трёх переданных строк только UTC явяется поддерживаемой временной зоной.
ЕЩЁ
вот полезный скрипт вывода поддерживаемых временных зон.
Под видом временных зон мне встречалиь следующие (неподдерживаемые):
YEKT - видимо, Екатерибург MSK - видимо, Московское время SAMT - видимо, Самара PKT - судя по всему - время Пакистана
Им соответствуют (из списка поддреживаемых):
YEKT = Asia/Yekaterinburg MSK = Europe/Moscow SAMT = Europe/Samara PKT = Asia/Ashgabat
Asia/Ashgabat выбрана потому, что Пакистан тоже находится во временной зоне UTC+5 (Asia/Ashgabat)
- Log in to post comments
- 3113 reads