2011-12-01 46 views
0
var now = new Date; 
var timenow = [now.getHours(),now.getMinutes(),now.getSeconds()].join(':'); 
var date1 = '2011/11/30'; 
var dat = new Date(date1 +timenow); 
document.write(dat); 
document.write(Date.parse(dat)); 

我从我的服务中获取日期字符串,然后追加时间,为什么它会抛出无效日期。为什么我在这里得到无效日期和NaN?

+3

有时候我很惊讶人们有时候自己做的调试很少。 –

+1

@ 32bitkid为什么? Stackoverflow社区可以为你调试代码,看看你自己。 – bezmax

+3

你也可以使用日期构造函数; '新的日期(2011年,11 - 1,30,now.getHours(),now.getMinutes(),now.getSeconds());' –

回答

4

你在日期后缺少空格,所以你试图解析类似2011/11/3013:44:02而不是2011/11/30 13:44:02

var now = new Date; 
var timenow = [now.getHours(),now.getMinutes(),now.getSeconds()].join(':'); 
var date1 = '2011/11/30 '; 
var dat = new Date(date1 + timenow); 
document.write(dat); 
document.write(Date.parse(dat)); 
+1

还有我不知道Date.parse与个位数秒有多好戏剧和分钟。将'month','day'设置为'now',可能会更好,而不是依赖'parse' –

0

试试这个

var now = new Date; 
var timenow = [now.getHours(),now.getMinutes(),now.getSeconds()].join(':'); 
var date1 = '2011/11/30'; 
var dat = Date(date1 + timenow); 
document.write(dat); 

Here是工作提琴

0

因为他不能正确解析。看这个例子:Example

new Date =>()missing。

on var dat缺少空白空间。

0

date1 + timenow字符串,你送入Date构造,会是这个样子:

2011/11/3014:34:53 

这不是一个有效的日期规格为每Date.parse方法(使用Date构造像这样的相当于拨打parse),所以你得到一个无效的结果。做到这一点,而不是:

var dat = new Date(date1.replace(/\//g, '-') + "T" + timenow); 

这使得你的字符串看起来像2011-11-30T14:34:53,这是parse支持的格式。

相关问题