Подтвердить что ты не робот

Php: конвертировать миллисекунды на сегодняшний день

У меня есть строка, которая равна дате, представленной как число миллисекунд с эпохи Unix.

Я пытаюсь вывести его в d-m-Y.

Строка, которую я получил, была "1227643821310", и мне сказали, что результат должен быть равен 2-12-2008, но я продолжаю получать результат от 25-11-2008

Мой код выглядит следующим образом:

$mil = 1227643821310;
$seconds = $mil / 1000;
echo date("d-m-Y", $seconds);

Любые идеи относительно того, почему это может быть?

4b9b3361

Ответ 1

Вы уже делаете это правильно, 1227643821 просто не 02-12-2008, это действительно 25-11-2008.

Ответ 2

Я только что добавил H: i: s, как в приведенном ниже примере:

$mil = 1227643821310;
$seconds = $mil / 1000;
echo date("d/m/Y H:i:s", $seconds);

Ответ 3

Единственное, что я могу придумать, это попытаться округлить десятичную часть, прежде чем преобразовать ее в дату. Если это не изменит результат, результат будет правильным.

Ответ 4

Джефф, важная вещь, которую нужно понимать при работе с отметками времени: они представляют время, прошедшее с 0:00:00 01.01.1970 в GMT, а не в вашем часовом поясе (если вы не являетесь самим собой в GMT, конечно).

1227643821 действительно представляет время GMT 20:10:21 25.11.2008.

Это 25 ноября 2008 года в большинстве стран мира, однако во временных точках к востоку от Москвы (и в московском часовом поясе летом из-за летнего времени) его уже 26 ноября. Поскольку самый "экстремальный" восточный часовой пояс - GMT + 14, в мире нет места, где отметка времени 1227643821 может представлять дату позже 26-го.

Автор исходной ценности может как-то ошибиться при работе с часовыми поясами. Или просто ошибаюсь. Например, при вычислении значения добавляются секунды вместо миллисекунд на некотором шаге.