У меня есть дата, которая возвращается в этом строчном формате с момента.js для приложения календаря.
Пт 16 июн 2017 00:00:00 GMT-0500 (центральное летнее время)
Как я могу разобрать эту строку в "2017-06-16", используя момент для возврата, указывает, что это недопустимый ввод. Использование его в качестве экземпляра новой Date() возвращает мне неправильную дату.
var check = moment('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)', 'YYYY/MM/DD');
var month = check.format('M');
var day = check.format('D');
var year = check.format('YYYY');
console.log(month, day, year);
//-->invalid date
moment.js
. Просто используйте собственный конструктор Date()
.
const date = new Date('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)');
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear();
console.log(day, month, year);
И если вам нужно конвертировать существующую дату moment.js:
const momentDate = ...;//insert your moment.js date here
const date = new Date(momentDate._i);
const day = date.getDate();
const month = date.getMonth();
const year = date.getFullYear();
console.log(day, month, year);
Полностью согласен с комментарием Jordan Running
Этот вывод консоли не показывает строку. Он показывает свойство объекта с именем date, значением которого является объект Moment
Поскольку у вас уже есть мгновенный объект (date
var), вы можете просто использовать format()
чтобы показать значение момента в формате, который вы предпочитаете.
В вашем случае вы можете:
date.format('YYYY-MM-DD');
Вот живой пример:
var date = moment([2017, 5, 16]);
console.log(date); // Print moment object (like the one provided in the question)
console.log(date.format('YYYY-MM-DD')); // Print string output of format (in the desired format)
<script src="/moment.min.js"></script>
moment.js
...
var check = moment(new Date('Fri Jun 16 2017 00:00:00 GMT-0500 (Central Daylight Time)'));
var month = check.format('M');
var day = check.format('D');
var year = check.format('YYYY');
console.log(month, day, year);
<script src="/moment.min.js"></script>
В отличие от дампа даты объект показывает мне атрибут
_isValid: false
проверьте скрипт и консольный журнал https://jsfiddle.net/s6x87u1p/