2016-05-25 2 views
0

Я пытаюсь разобрать значение из типа ввода = datetime-local, используя JQuery. Я знаю, почему, но он возвращает мне NaN, когда я говорю ему, чтобы разобрать переменную.JQuery Date.parse возвращает NaN

$("#new-broadcast-arrival-time").on("change", function(){ 
    var a = $(this).val(); 
    var d = Date.parse(a); 
    console.log(a); 
    console.log(d); 
}) 

и мой выход

123213-03-12T12: 12

NaN

Что не так?

2) Мой выход ожидание ГГГГММДДччммсс

Как я могу иметь это?

+5

Дата, вероятно, вне допустимого диапазона. Год "123213" – Quantastical

ответ

2

В вашем случае данная дата недействительна.

Так, чтобы ответить на ваш вопрос, если вы хотите, чтобы вывод быть: ГГГГММДДччммсс

Вы должны использовать dateFormat

пример кода с DateFormat:

var a = $(this).val(); 
var dateFormat = require('dateformat'); 
var yourdate = new Date(a); 
dateFormat(yourdate, "yyyy mm dd hh:mm:ss"); 

Другим возможным способом было бы используйте moment.js, который представляет собой полную библиотеку, которая может форматировать даты и делать с ними много вещей. Вы можете взглянуть на их документ, он полностью детализирован.

EDIT:

При использовании библиотеки действительно беспокоит вас, вот как вы могли бы сделать это без него. (Грязные, но работает ...)

var str = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds(); 
+0

есть ли способ сделать это без плагина? – vbotio

+0

Да, я так думаю, проверьте мое редактирование – MasterJohn

4

Это, вероятно, потому, что 123213-03-12T12:12 не является допустимым форматом даты. Date.parse() вернет NaN, если он не распознает строку даты или недействительную дату. В вашем случае это похоже на недопустимый формат даты.

Вот excerpt from the docs:

... NaN если строка непризнанного или, в некоторых случаях, содержит противозаконной дату значения (например, 2015-02-31).

+0

Yup. Ударь меня в документы! : D –

1

Вы не должны использовать Date.parse. От MDN:

Не рекомендуется использовать Date.parse, как до ES5, синтаксический анализ строк был полностью зависит от реализации. Есть все еще много различий в том, как разные узлы анализируют строки даты, поэтому строки даты должны быть вручную проанализированы (библиотека может помочь, если нужно разместить много разных форматов).

В вашем случае это возвращение NaN, потому что это выходит за пределы диапазона — год является 123213.

Вместо этого я рекомендую использовать библиотеку Moment.js.

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