2011-01-21 2 views
3

Я думаю, что это глупый вопрос, но кажется, что я не могу найти ответ.Получить правильный час для отметки времени UNIX

У меня есть этот штамп времени: 1295598602.

В моем PHP скрипт у меня есть:

$ дата = дата ('Y-м-д', 1295598602); $ hour = date ('H', 1295598602). ': 00';

Это возвращает:

Дата: 2011-01-21
час: 03:00

Теперь я пошел на сайт преобразования онлайн, чтобы проверить это. Я использовал this one. Но мне кажется, что это значение временной метки это

Пт, 21 января 2011 8:30:02 GMT

Теперь, какой из них правильный?

+3

Это будет зависеть от часового пояса вашего сервера и веб-службы –

ответ

5

Используйте правильный часовой пояс:

>> date_default_timezone_get(); 
'UTC' 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 08:30:02' 
>> date_default_timezone_set('CET'); 
true 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 09:30:02' 
>> date_default_timezone_set('UTC'); 
true 
>> date('Y-m-d h:i:s',1295598602); 
'2011-01-21 08:30:02' 
4

В GMT/UTC (они почтиbut not quite точно такие же), что timestamp действительно Fri, 21 Jan 2011 08:30:02 GMT.

Если вы находитесь в другом часовом поясе, но всегда хотите GMT, вам необходимо использовать функцию gmdate() вместо date().

+0

не очень. Просто установите правильный часовой пояс. – Mchl

+0

date_default_timezone_set() только в PHP 5.1.0 и более поздних версиях, которые могут быть недоступны. – Alnitak

+0

Серьезно? PHP 5.2 теперь больше не поддерживается его разработчиками. Если кто-то все еще ниже 5.1, им следует рассмотреть вопрос об обновлении в первую очередь. – Mchl

0

В соответствии с date() описания функции,

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

И в соответствии с time() Описание функции, оно возвращает GMT timestamp.

Итак, PHP делает преобразование в ваш часовой пояс, а onlineconversion.com - нет.

1

Оба являются правильными. В фрагменте кода PHP настраивается для часового пояса. Попробуйте date_default_timezone_set('UTC');, чтобы получить правильные нескорректированные значения.

1

Другой вариант - установить часовой пояс по умолчанию для вашего скрипта.

Например,

date_default_timezone_set('Europe/London'); 
$timestamp = '1295598602'; 
echo date('Y-m-d H:i:s', $timestamp); 

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

В PHP существует ряд связанных с часовым поясом функций, которые позволят вам изменить, какой часовой пояс отображается.

Вы можете проверить PHP документы для списка ваших вариантов: http://www.php.net/manual/en/ref.datetime.php

+2

'Европа/Лондон' часовой пояс уважает летнее время. Вместо этого используйте 'UTC' или' GMT'. – Mchl

Смежные вопросы