新日期(...)增加了一个月

时间:2013-11-03 07:44:44

标签: javascript node.js

我正在使用node.js开发,我正在尝试在服务器上创建日期对象。

编码时

var birthyear = 2000;
var birthmonth = 7;
var birthday = 24;
var date = new Date(birthyear, birthmonth, birthday);
console.log(date);

输出:

Thu Aug 24 2000 00:00:00 GMT+0300 (Jerusalem Daylight Time)

正如你所看到的,我是8月而不是7月。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:6)

Date()构造函数中的月份参数从1开始不是从1开始,而是从0开始。因此,提供月份值7将为您提供8个月,即8月。

来自MDN

  

month:表示月份的整数值,从1月的0开始到12月的11。

答案 1 :(得分:1)

JS中的月份从0开始 所以这是一个非常简单的修复

var date = new Date(birthyear, birthmonth-1, birthday); 

<强> DEMO

答案 2 :(得分:0)

JavaScript Date() constructor中的月份是0索引的,这意味着月7实际上是8月。使用7月的值6

令人讨厌的是,Date对于哪些字段是0索引且哪些是1索引是相当不一致的,实际上相同的字段可以是一个,具体取决于上下文。当您必须使用日期时,您应该始终参考文档。

答案 3 :(得分:0)

是的,这很奇怪,但应该从

开始算几个月
0