Преобразование временной метки Unix в часовой пояс Locale

Все,

Как я могу преобразовать временную метку unix в дату и время в местном часовом поясе. Для метки времени = 1303374724716 функция date ('r', $timestamp) PHP дает мне Sun, 16 May 2032 22:11:37 +0000, тогда как конвертер эпох ПРАВИЛЬНО конвертирует в
GMT: Thu, 21 Apr 2011 08:32:04 GMT
Your timezone: Thu Apr 21 2011 04:32:04 GMT-0400 (Eastern Daylight Time)

Я видел файл php.ini, а часовой пояс по умолчанию — UTC. Я не понимаю, почему значение даже не соответствует времени GMT/UTC. Может ли кто-нибудь помочь мне преобразовать в мой местный часовой пояс, то есть New_York.


person name_masked    schedule 05.05.2011    source источник


Ответы (2)


Это потому, что временная метка, которую вы получаете, указана в миллисекундах.

Do:

$timestamp = floor(1303374724716/1000);

И все будет работать как положено.

person Alec Gorge    schedule 06.05.2011

Документы говорят:

timestamp является необязательным и по умолчанию равно значению time().

Если вы запустите

print time();

вы получите число вроде 1304640077.

Обратите внимание, что оно в 1000 раз меньше числа, которое вы пытаетесь передать.

Другими словами, вы должны передавать значение в секундах, а не в миллисекундах.

Чтобы установить часовой пояс, используйте date_default_timezone_set, например

date_default_timezone_set('America/New_York');

или установите date.timezone в файле php. ини файл.

person Mikel    schedule 06.05.2011