DANFA

PHP: Как перевести zXXX в часовой пояс?

PHP
В PHP аббревиатуру типа «Z260» напрямую перевести в часовой пояс невозможно, так как это обозначение нестандартное и не общепринятое в PHP. Обычно часовые пояса представлены в формате Continent/City (например, Europe/Moscow, America/Los_Angeles) или с использованием сдвигов от Всемирного координированного времени (UTC), например, UTC+3.

Что делать, если нужно получить часовой пояс из нестандартного обозначения типа «zXXX»?



Связать «zXXX» с конкретным городом или регионом
Если известно, что «zXXX» соответствует определённому городу или региону, можно создать таблицу соответствия и переводить вручную:
$zoneMapping = [
    'zXXX' => 'Europe/Moscow', // например, Москва
    // другие пары Zone -> City
];

$tz = $zoneMapping['Z260'];
$dt = new DateTime('now', new DateTimeZone($tz));
echo $dt->format('Y-m-d H:i:s e');

Если «zXXX» содержит смещение (например, UTC±3)
Если «zXXX» обозначает смещение относительно UTC, можно воспользоваться этим смещением:
$offsetHours = substr('Z260', 1); // Получаем "260"
$hours = intval($offsetHours) / 100; // превращаем в часы

$tz = new DateTimeZone(sprintf('UTC%+.0f', $hours));
$dt = new DateTime('now', $tz);
echo $dt->format('Y-m-d H:i:s e');

Если нет ясности, что означает «zXXX»
Если значение неясно или неизвестно, лучше проконсультироваться с автором документации или попросить разъяснения у поставщика данных.

Если известна взаимосвязь между нестандартным обозначением («zXXX») и официальным часовым поясом, можно реализовать отображение вручную. Если это смещение от UTC, его можно превратить в часовой пояс, как показано выше.
Автор:  12 часов назад