Сначала код
echo time() . '<br/>'; echo date('Ymd H:i:s') . '<br/>'; date_default_timezone_set('America/New_York'); echo time() . '<br/>'; print_r($timezones[$timezone] . '<br/>'); echo date('Ymd H:i:s') . '<br/>';
В приведенном выше коде дата печатается в соответствии с часовым поясом, но временная отметка unix одинакова даже после установки часового пояса по умолчанию
Как мы можем напечатать временную метку unix в соответствии с часовым поясом?
Ответ, предоставленный Фолькерком, верен, но если вам действительно нужна работа, взгляните на мой пример.
<?php //default timezone $date = new DateTime(null); echo 'Default timezone: '.$date->getTimestamp().'<br />'."\r\n"; //America/New_York $date = new DateTime(null, new DateTimeZone('America/New_York')); echo 'America/New_York: '.$date->getTimestamp().'<br />'."\r\n"; //Europe/Amsterdam $date = new DateTime(null, new DateTimeZone('Europe/Amsterdam')); echo 'Europe/Amsterdam: '.$date->getTimestamp().'<br />'."\r\n"; echo 'WORK AROUND<br />'."\r\n"; // WORK AROUND //default timezone $date = new DateTime(null); echo 'Default timezone: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; //America/New_York $date = new DateTime(null, new DateTimeZone('America/New_York')); echo 'America/New_York: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; //Europe/Amsterdam $date = new DateTime(null, new DateTimeZone('Europe/Amsterdam')); echo 'Europe/Amsterdam: '.($date->getTimestamp() + $date->getOffset()).'<br />'."\r\n"; ?>
Получите регулярную метку времени и добавьте смещение UTC
https://en.wikipedia.org/wiki/Unix_time
Время Unix или время POSIX – это система для описания моментов времени, определяемая как количество секунд, прошедших с полуночи. Скоординированное всеобщее время (UTC) в четверг, 1 января 1970 г.
Временная метка unix не зависит от настройки часового пояса. Установка часового пояса влияет только на интерпретацию значения метки времени.