Как конвертировать временную метку unix в календарь date moment.js

У меня есть метка времени Unix, и я пытаюсь преобразовать ее в календарную дату, такую как MM/DD/YYYY. Пока у меня есть это:

$(document).ready(function() {
  var value = $("#unixtime").val(); //this retrieves the unix timestamp
  var dateString = moment(value).calendar(); 
  alert(dateString);
});

Когда я пытаюсь распечатать календарную дату, в окне появляется сообщение "Неверная дата". Может кто-нибудь мне помочь?

Ответ 1

Использование момента .js по вашему запросу:

var dateString = moment.unix(value).format("MM/DD/YYYY");

Ответ 2

Временная метка UNIX - это количество секунд с 1970 года, поэтому вам нужно преобразовать ее в объект JS Date:

var date = new Date(unixTimestamp*1000);

Ответ 3

Moment.js предоставляет локализованные форматы, которые можно использовать.

Вот пример:

const moment = require('moment');

const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');

console.log(formatted); // "02/24/2018"

Ответ 4

new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()

Ответ 5

Я исправил это как этот пример.

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />

Ответ 6

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

moment(timestamp, 'X').format('lll');

Вы можете изменить формат в соответствии со своими потребностями, а также добавить часовой пояс, например так:

moment(timestamp, 'X').tz(timezone).format('lll');

Ответ 7

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

Существует строгий режим и режим прощения.

Хотя строгий режим работает лучше в большинстве ситуаций, прощающий режим может быть очень полезен, когда формат строки, передаваемой в данный момент, может отличаться.

В более позднем выпуске парсер по умолчанию будет использовать строгий режим. Строгий режим требует ввода в данный момент, чтобы точно соответствовать указанному формату, включая разделители. Строгий режим устанавливается путем передачи true в качестве третьего параметра функции момента.

Распространенный сценарий, когда режим прощения полезен, - это ситуации, когда сторонний API предоставляет дату, и формат даты для этого API может измениться. Предположим, что API начинается с отправки дат в формате "ГГГГ-ММ-ДД", а затем изменяется на формат "ММ/ДД/ГГГГ".

В строгом режиме следующий код приводит к отображению "Неверная дата":

moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"

В режиме прощения с использованием строки формата вы получаете неправильную дату:

moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"

другой способ будет

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment.unix(value).calendar(); 
    alert(dateString);
});

Ответ 8

Только его,

moment.unix(date).toDate();