2014-02-03 4 views
0

, когда я пытаюсь напечатать 160000 в результатах gmstrftime.it 20:26, но для 80000 он дает 22:13. Я не уверен, почему это происходит. У них есть какой-то предел для gmstrftime?Проблема с отображением времени с использованием gmstrftime

echo gmstrftime('%H:%M', 160000); 

это дает 20:26.

echo gmstrftime('%H:%M', 80000); 

дает 22:13

+2

Второй аргумент является * UNIX метка времени *, а не "160000" на "16:00:00". – deceze

+0

@deceze: так какое решение для этого. потому что я сохраняю временную метку как целое в базе данных, а во фронте я делаю некоторые вычисления по метке времени и выводит окончательный вывод. –

ответ

0

Подобно тому, как deceze указал второй ARG эпоха или Unix времени. Количество секунд с 1970 1 января 00:00. Если вы оставите второй аргумент, вы получите текущее время.

<?php 
    $time1 = strtotime("2014-02-03 20:26"); 
    echo "First time (".date('c', $time1).") in epoch: $time1\n"; 
    echo gmstrftime('%H:%M', $time1)."\n"; 
    $time2 = strtotime("2014-02-03 22:13"); 
    echo "Second time (".date('c', $time2).") in epoch: $time2\n"; 
    echo gmstrftime('%H:%M', $time2)."\n\n"; 

?> 

Подключите разные даты для $ time1 и $ time2, чтобы увидеть эпоху.

0

160000 не является временной меткой, так как PHP (или другие общие системы) определяют временную метку. То, что у вас есть, - это просто время суток, выраженное в «военном времени», хранящееся как целое число. Таким образом, в первую очередь любая функция gm, скорее всего, не то, что вы хотите использовать, так как вы теряете информацию о часовом поясе из этой «временной метки» для начала, поэтому преобразование в ГМ-время неоднозначно, если не невозможно.

Лучшее, что вы можете быть в состоянии сделать это:

$timestamp = DateTime::createFromFormat('His', sprintf('%06d', 160000))->format('U'); 
echo strftime('%H:%M', $timestamp); 
+0

Ошибка Ошибка синтаксиса: неожиданный '(', ожидающий T_STRING или T_VARIABLE или '{' или '$' –

+0

Упс, мой плохой. :) – deceze

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