我是JavaScript新手并尝试使用NodeJS将一些服务器端代码转换为它。下面是一个片段;一般来说,它需要一个日期并从中减去2周。
任何人都可以解释下面发生的原因吗?
var currentDate = new Date('05/12/2014 14:32');
currentDate.setDate(currentDate.getDate() - 14);
console.log(typeof currentDate);
console.log(currentDate);
输出:
object
Mon Apr 28 2014 14:32:00 GMT-0500 (CDT)
现在,一切都很顺利。我已经设法减去了约会的14天。但是,它真的不再是'currentDate'所以我想把它分配给'futureDate'
var currentDate = new Date('05/12/2014 14:32');
var futureDate = currentDate.setDate(currentDate.getDate() - 14);
console.log(typeof futureDate);
console.log(futureDate);
输出:
number
1398713520000
伊克。那不好。它看起来像是从纪元以来的毫秒数或者作为数字的东西。艰难时期。但是,如果我这样做,它确实有用......
var currentDate = new Date('05/12/2014 14:32');
currentDate.setDate(currentDate.getDate() - 14);
var futureDate = currentDate;
console.log(typeof futureDate);
console.log(futureDate);
输出:
object
Mon Apr 28 2014 14:32:00 GMT-0500 (CDT)
这对我来说没有任何逻辑意义。 JavaScript伤害了我的头脑。我很感激能帮助你理解这里发生的事情。我知道我可以继续并且我的脚本可以工作,但我想了解发生了什么。
谢谢, 汤姆
答案 0 :(得分:0)
现在代码中实际发生的是:
var futureDate = currentDate.setDate(currentDate.getDate() - 14);
您将 currentDate 的日期设置为currentDate.getDate() - 14
。
currentDate.setDate
会返回与该新日期等效的整数,并将其保存到 futureDate 。
您应该将其保存为日期,而不是当前的整数。
这是因为futureDate
目前不是日期。 currentDate.getDate() - 14
只会返回一个数字,但要将其设为日期,您应首先将futureDate
初始化为日期,然后使用futureDate.setDate
为其指定新的日期值。< / p>
var futureDate = new Date();
futureDate.setDate(currentDate.getDate() - 14);