У меня есть временная метка unix, и я пытаюсь преобразовать ее в календарную дату, например MM/DD/YYYY
. Пока у меня есть это:
$(document).ready(function() {
var value = $("#unixtime").val(); //this retrieves the unix timestamp
var dateString = moment(value).calendar();
alert(dateString);
});
Когда я пытаюсь распечатать календарную дату, в окне появляется сообщение «Недействительная дата». Может кто-нибудь мне помочь?
javascript
datetime
momentjs
Андрей
источник
источник
calendar
Функция хорошие ( документы здесь ), но не в том формате , что ОП просили.monent(number)
ожидает отметку времени UNIX в милли секунд (что согласуется сDate
объектом), в то время как временная метка Unix в секундах по умолчанию. Так что вы также можете сделатьmoment(value*1000)
вместоmoment.unix(value)
, но использованиеunix
более понятное.Временная метка UNIX - это количество секунд с 1970 года, поэтому вам нужно преобразовать ее в объект JS Date:
var date = new Date(unixTimestamp*1000);
источник
Moment.js предоставляет локализованные форматы, которые можно использовать.
Вот пример:
const moment = require('moment'); const timestamp = 1519482900000; const formatted = moment(timestamp).format('L'); console.log(formatted); // "02/24/2018"
источник
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()
источник
Может быть, немного поздно, но для новых проблем, подобных этой, я использую этот код:
moment(timestamp, 'X').format('lll');
Вы можете изменить формат в соответствии со своими потребностями, а также добавить часовой пояс следующим образом:
moment(timestamp, 'X').tz(timezone).format('lll');
источник
x
для отметки времени ms unix. Документация здесьТолько его,
источник
moment(1454521239279).toDate() moment(1454521239279).format()
источник
Я исправил это как в этом примере.
$scope.myCalendar = new Date(myUnixDate*1000); <input date-time ng-model="myCalendar" format="DD/MM/YYYY" />
источник
$(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 начинает с отправки дат в формате «ГГГГ-ММ-ДД», а затем переходит в формат «ММ / ДД / ГГГГ».
В строгом режиме следующий код приводит к отображению «Invalid Date»:
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); });
источник
Эта функция создает дату из отметки времени:
function formatDateTime(dateString) { const parsed = moment(new Date(dateString)) if (!parsed.isValid()) { return dateString } return parsed.format('MMM D, YYYY, HH:mmA') }
источник
moment(timestamp).format('''any format''')
источник