2016-05-25 180 views
0

我想解析從輸入type = 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)我的期望輸出 YYYYMMDDHHMMSS

我怎麼能有呢?

+5

日期可能超出範圍。今年是「123213」 – Quantastical

回答

2

就你而言,給定日期無效。

因此,要回答你的問題,如果你想輸出是:YYYYMMDDHHMMSS

你必須使用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這是一個完整的庫,可以格式化日期,並與他們做很多東西。你可以看看他們的文檔是完全詳細的。

編輯:

如果使用庫真的困擾你,這裏是你如何能做到這一點沒有一個。 (髒,但工作...)

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年2月31日)。

+0

是的。打我到文檔! :D –

1

您不應該使用Date.parse。從MDN

不建議使用Date.parse作爲ES5之前,字符串的解析完全是依賴於實現的。不同的主機如何解析日期字符串仍然存在很多差異,因此應該手動解析日期字符串(如果要適應多種不同的格式,庫可以提供幫助)。

你的情況,它的返回NaN,因爲它是超出範圍—年是123213

我建議你使用Moment.js庫來代替。