PHP - миллисекунды в часы:минуты (24-часовая дата)

Как я могу получить дату в 24-часовом формате (часы и минуты) из миллисекунд?

Я получил это значение в миллисекундах: 1433630097855

Я хочу, чтобы он распечатывал время в часах/минутах. Я не помню точно, который это был час, но, кажется, около 00:45.

Так что это должно распечатать как: 00:45

Если это было 3 часа дня, он должен распечатать что-то вроде: 15:25.

Я не смог найти это преобразование для 24-часового формата, и когда это 00: xx, я пробовал, но он печатает только «0».

Нравиться:

0:10

Я хочу, чтобы это было как 00: в начале.

Возможно, есть быстрая команда для этого уже в php или мне нужна какая-то функция?


person TyhaiMahy    schedule 06.06.2015    source источник
comment
PHP DateTime предлагает целый ряд вариантов форматирования даты и времени.   -  person    schedule 07.06.2015
comment
Вы должны увидеть эти потоки: 557959/ - stackoverflow.com/questions/17909871/   -  person Akimoto    schedule 07.06.2015
comment
Предполагая, что это миллисекунды с 01.01.1970 00:00:00 по Гринвичу, $var = DateTime::createFromFormat('U', intval(1433630097855 / 1000)); echo $var->format('H:i:s'); дает 22:34:57 сегодня   -  person Mark Baker    schedule 07.06.2015
comment
Вот что я пытаюсь исправить. Сейчас здесь 01:19 CEST. Когда я использую этот код @MarkBaker, по какой-то причине у меня получается 13:19.   -  person TyhaiMahy    schedule 07.06.2015
comment
Ну, временная метка Unix должна быть UTC, поэтому вам нужно установить часовой пояс для объекта DateTime на ваше местное время: $var = DateTime::createFromFormat('U', intval(1433630097855 / 1000)); $var->setTimezone(new DateTimeZone('Europe/Copenhagen')); echo $var->format('H:i:s');   -  person Mark Baker    schedule 07.06.2015


Ответы (2)


Преобразуйте миллисекунды в секунды 1433630097855 / 1000, а затем просто используйте секунды (целочисленная метка времени) в знакомых вам функциях даты и времени. И не забывайте о часовом поясе.

$ms = 1433630097855;
$s = floor($ms/1000);
echo date('H:i:s', $s); # 22:34:57

демонстрация

Если вы хотите получить вывод для другого часового пояса, установите его:

date_default_timezone_set('America/Los_Angeles');
echo date('H:i:s', $s); # 15:34:57

демонстрация

Вы даже можете использовать DateTime class, например:

$dt = new DateTime("@$s");
$dt->setTimeZone(new DateTimeZone('America/Los_Angeles'));
echo $dt->format('H:i:s'); # 15:34:57

демонстрация

person Glavić    schedule 07.06.2015
comment
Хорошее решение, но оно будет работать не более 24 часов :( - person kkochanski; 02.10.2015
comment
@DaVilchi: правда, это то, что нужно ОП. Если вам нужно показать также дни, используйте это. - person Glavić; 03.10.2015
comment
Вы спасли мой день, искал этот ответ 4-6 часов :) - person Alauddin Ahmed; 19.05.2019

Вы можете использовать создание нового объекта даты из метки времени

http://php.net/manual/en/function.date.php

person Jon Bates    schedule 06.06.2015