2009-12-01 3 views
4

Посмотрите на приведенный ниже код:PHP ИНТ на сегодняшний день проблемы

$t=77; 
date("H:i:s", $t); 

возвращает

21:01:17 

правильный результат, конечно же, должно быть что-то вроде 00:01:17.

Значение $ t действительно является значением в секундах, возвращаемым API GData YouTube, trought($videoEntry->getVideoDuration()).

Как устранить эту проблему?

ответ

8

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

date_default_timezone_set('GMT'); 
$t=77; 
echo date("H:i:s", $t); 
+0

ОК GMT или UTC работает нормально. thx –

-1

Постарайтесь установить часовой пояс GMT.

date_default_timezone_set('Europe/London'); 
+1

Разве Лондон не в разное время, чем в GMT в некоторых частях года? – Atli

+0

Отправление в Европу/Лондон возвращается 01:01:17. См. Решение ниже. –

2

Второй аргумент на сегодняшний день() является метка времени Unix - другими словами, это количество секунд, прошедших с 1 января 1970 года, с поправкой на то, что PHP установлен в течение часового пояса (можно установить с помощью date_default_timezone_set).

-1

Я думаю, что если вы получаете значения во втором, то вы должны использовать функцию mktime, тогда она даст правильный результат. Например:

$t=77; 
echo date("H:i:s", mktime(0,0,$t)); 
+1

Эй. Функция 'mktime' создает временную метку - количество секунд с« 1970-01-01 »- и использование ее с использованием всего лишь секундного значения просто создает временную метку на сегодняшний день в это конкретное время. Например. '2009-12-01 00: 01: 17' * (с использованием GMT) *. Который, если вас интересуют только значения времени, ничего не меняет. То, что вы разместили, фактически эквивалентно '$ t = 77; echo date ("H: i: s", $ t); '. – Atli

+0

Hi Atli ... вы правы ... спасибо за разъяснение –

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