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