Как отделить дату от нестандартной строки даты

1

У меня есть дата, которая возвращается в этом строчном формате с момента.js для приложения календаря.

Изображение 174551

Пт 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

http://jsfiddle.net/t89apndd/

Теги:
date
momentjs

4 ответа

1
Лучший ответ

Вам не нужен 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);
  • 0
    @ Спасибо, исправлено.
  • 1
    Это работает, спасибо.
Показать ещё 1 комментарий
1

Полностью согласен с комментарием 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="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
0

Если вы действительно хотите 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="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
-2

В отличие от дампа даты объект показывает мне атрибут

_isValid: false

проверьте скрипт и консольный журнал https://jsfiddle.net/s6x87u1p/

Ещё вопросы

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