2016-05-25 173 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库来代替。