отметка времени в формате unix неверная дата

1

Я хочу преобразовать временную метку миллисекунд Unix в читаемую дату.

Моя отметка времени - 1525772511140. Правильный вывод должен выглядеть примерно так: 29-05-2018 9:41:51 AM

Теперь мой код возвращает неверную дату: 31-10-50319 03:10...

код:

var timeStamp = new Date(1525772511140 * 1000);
var date = moment(timeStamp).format('DD-MM-YYYY HH:mm');
console.log(date);
  • 1
    Почему ты умножаешь на 1000?
  • 1
    Но отметка времени уже миллисекунды @lakshay
Показать ещё 3 комментария
Теги:
momentjs

5 ответов

2

Вы можете просто использовать moment(Number):

Подобно new Date(Number), вы можете создать момент, передав целочисленное значение, представляющее количество миллисекунд с момента Unix Epoch (1 января 1970 года 12:00 UTC)

var date = moment(1525772511140).format('DD-MM-YYYY HH:mm');
console.log(date);
// with seconds and AM/PM
date = moment(1525772511140).format('DD-MM-YYYY hh:mm:ss A');
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

Исходное решение для JavaScript (без instant.js):

var d = new Date(1525772511140);
console.log(
  ("0" + d.getDate()).slice(-2) + '-' +
  ("0" + (d.getMonth()+1)).slice(-2) + '-' + 
  d.getFullYear() + ' ' +
  d.getHours() + ':' +
  d.getMinutes()
);
1

Ни один из ответов не дает правильного вывода.

В вопросе ожидаемый результат - 29-05-2018 9:41:51 AM, который является moment().format('DD-MM-YYYY HH:mm:ss A')

Ниже приведен правильный ответ в соответствии с вопросом:

let date = moment(1525772511140).format('DD-MM-YYYY HH:mm:ss A');
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>

Для получения дополнительной информации о форматах момента проверьте эту ссылку: https://momentjs.com/docs/#/parsing/special-formats/

  • 0
    Ты проверил мой ответ?
  • 0
    '... ssA' должно быть в конце формата, чтобы соответствовать ... не '... ss A' ... это поместило бы пробел между секундами и AM / PM ..., что в примере не не имеет.
1

Просто удалите *1000 из своего заявления, и он работает:

var timeStamp = new Date(1525772511140);
var date = moment(timeStamp).format('DD-MM-YYYY HH:mm');
console.log(date);
<script src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>

Временная метка уже в миллисекундах, поэтому нет необходимости умножать на 1000.

  • 0
    спасибо, но выдает ошибку «неверная дата». каким-то образом это работает, если я делаю Дата (1525772511140/1000 * 1000) ..
  • 0
    @patza это работает, когда я помещаю это во фрагмент
Показать ещё 3 комментария
0

Пытаться

const date = moment(new Date(1525772511140)).toDate();

или же

const date = moment(new Date(1525772511140)).format('DD-MM-YYYY HH:mm')
0

Попробуй это

moment.unix(1525772511140 / 1000).format('DD-MM-YYYY HH:mm')
  • 0
    @pazta это работает нормально

Ещё вопросы

Сообщество Overcoder
Наверх
Меню