Временная метка UNIX не зависит от часового пояса, так как она равна количеству секунд с момента, прошедшего с прошлого момента: мы не обсуждаем ее здесь, но имеем дело с так называемой временной меткой
Я работаю с API, в котором есть ошибка: при условии, что временные метки не являются реальными метками времени UNIX, а из часового пояса CET.
Например, для этой отметки времени 1484521200
2017-01-15T23:00:00+00:00
2017-01-16T00:00:00+00:00
Поэтому я рассматриваю следующий код для «преобразования» временной метки из CET в UTC:
date_default_timezone_set('CET');
$timezone = new DateTimeZone('UTC');
$date = date('Y-m-d H:i:s', $timestamp_API);
$date = DateTime::createFromFormat('Y-m-d H:i:s', $date, $timezone);
$timestamp_UNIX = $date->getTimestamp();
date_default_timezone_set('UTC'); // 1484524800
Но мне не нравится, когда я связываюсь с часовым поясом по умолчанию: есть ли лучший способ сделать это?
Лучше всего будет исправить API, но это произойдет не скоро.
Задача ещё не решена.
Других решений пока нет …