2016-07-07 9 views
3

Следующее сообщение от моего предыдущего сообщения: Javascript Safari: new Date() with strings returns invalid date when typed Я использую Moment.js для преобразования строки даты в поле даты на основе ввода пользователя в текстовое поле. Это делается для предотвращения проблемы, описанной в связанной записи для Safari и Firefox, которые не могут отображать дату, когда Chrome в порядке. Вот код Snipper:Moment.js, чтобы преобразовать дату строки в дату

var tempDate = moment(userInputFieldDate).format('DD-MM-YYYY'); 
alert(tempDate); 

В Chrome, он отлично работает (она используется для работы с Javascript Дата объекта тоже), но дает мне moment.js устаревания предупреждение предупреждение

Deprecation : моментная конструкция возвращается к js Date. Это обескураживает и будет удалено в предстоящем крупном выпуске. Пожалуйста, обратитесь к https://github.com/moment/moment/issues/1407 за дополнительной информацией. Аргументы: [объект Object] Ошибка

В Firefox и Safari просто дает неопределенную DATE в окне предупреждения. Поэтому я не совсем уверен, что мне делать, чтобы преобразовать строку даты в объект Date. Какие-либо предложения ?

ответ

32

Если вы получаете на основе JS даты String затем первым использовать new Date(String) конструктор, а затем передать Date объект методу moment. Как:

var dateString = 'Thu Jul 15 2016 19:31:44 GMT+0200 (CEST)'; 
var dateObj = new Date(dateString); 
var momentObj = moment(dateObj); 
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15 

dateString В случае является 15-07-2016, то вы должны использовать метод moment(date:String, format:String)

var dateString = '07-15-2016'; 
var momentObj = moment(dateString, 'MM-DD-YYYY'); 
var momentString = momentObj.format('YYYY-MM-DD'); // 2016-07-15 
+1

Что такое DateString от пользовательского ввода только "07-07-2016"? – noobcoder

+0

обновлен ответ – Matyas

+0

Вы спасатель жизни. Работает как шарм :) – noobcoder

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