Вы пробовали делить на 1000
вместо умножения? Время эпохи обычно в секундах ...
ОК, теперь мне нужно учить PHP ...
date
занимает формат и время.
strtotime
принимает удобочитаемую строку даты / времени и возвращает время. Ваше значение - время эпохи в миллисекундах, а не читаемая человеком строка, поэтому недопустимый аргумент strtotime
.
Попробуйте Метод 4 без strtotime
, в этом нет необходимости.
Да, это не сработало, потому что $timestamp
- это строка (я предположил, что это уже целое число).
Вы говорите, что отбрасывание последних 3 символов строки дает вам большую часть пути, это то же самое, что преобразование в целое число, а затем деление на 1000. Ваши методы 6 и 7 конвертируются в int, но не делят - вам нужны оба!
Согласно для этого , date
требуется целое число отметка времени в секундах . У вас есть строка, поэтому вы должны преобразовать ее в целое число. Это также в миллисекундах, поэтому вам нужно разделить на 1000, чтобы получить правильные единицы.
Обратите внимание, что время эпохи отсчитывается в секундах с первого января 1970 года. Поэтому, когда вы видите 01-01-1970
, второй аргумент оценивается как ноль.
date("d-m-Y", $timestamp); <-- string, not int: treated as zero
date("d-m-Y", strtotime($timestamp)); <-- not a formatted time, gives zero
date("d-m-Y", strtotime($timestamp*1000)); <-- ditto
date("d-m-Y", strtotime($timestamp/1000)); <-- ditto
date("d-m-Y", $timestamp/1000); <-- clearly nonzero, but no idea what!
date("d-m-Y", (int)$timestamp); <-- correct type but in milliseconds
date("d-m-Y", intval($timestamp)); <-- correct type but in milliseconds
Если вы передаете целое число, содержащее количество секунд, а не миллисекунд, оно должно быть правильным.
Вот так:
date("d-m-Y", intval($timestamp)/1000);