2015-10-27 4 views
0

Рассмотрим следующее:момент дает мне неверную дату

console.log(moment(investment.updated_at.date, 'MMDDYYYY')); 

Это дает мне момент объект назад:

Moment {_isAMomentObject: true, _i: "2015-10-27 10:22:22", _f: "MMDDYYYY", _isUTC: false, _pf: Object…} 

Когда я зову:

console.log(moment(investment.updated_at.date, 'MMDDYYYY').fromNow()); 

Я получаю неверном дату : Invalid date

Любая идея относительно того, как это неправильно форматируется? датой, переданной на данный момент, является: 2015-10-27 10:22:22

+0

Можете ли вы поделиться точным значением 'investment.updated_at.date'? – tyleha

+0

обновил вопрос. – TheWebs

+0

Попробуйте 'console.log (moment.utc (moment (investment.updated_at.date, 'MMDDYYYY)) .. fromNow());' – Hackerman

ответ

4

Вы указываете формат, который не соответствует вашей фактической строке даты при создании моментального объекта. MMDDYYYY будет соответствовать только датам, которые выглядели как 10272015.

Вместо этого дайте момент сделать свое дело - он знаком с форматом строки 2015-10-27 10:22:22.

moment(investment.updated_at.date).fromNow(); 

Если вы хотите быть действительно конкретно о нем по какой-то причине вы можете передать момент формат строки 'YYYY-MM-DD hh:mm:ss', который соответствует вашим данным.

+1

Вы должны быть очень осторожны с этим. '2015-10-27 10: 22: 22' будет проанализирован в соответствии с часовым поясом настроек главной системы, поэтому будет иметь другое значение в системах с разными настройками. – RobG

+0

Потрясающая точка. Даты не очень полезны без часовой пояс. Зависит от варианта использования, но если вы хотите нормализации, вы можете опираться на UTC с помощью 'moment.utc (date)' – tyleha

+0

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

Смежные вопросы