javascript从年,月,日创建日期

Fre*_*kyB 32 javascript jquery

我正在尝试创建一个新datejavascript.

我有year,monthday.在教程之后,创建new的语法date应该是:

new Date(year, month, day, hours, minutes, seconds, milliseconds)
Run Code Online (Sandbox Code Playgroud)

这正是我在做的事情:

var d = new Date(2016, 12, 17, 0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

这应该是2016年12月17日,但在我的控制台输出中,我看到:

Tue Jan 17 2017 00:00:00 GMT+0100 (Central Europe Standard Time)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Dea*_*ley 42

1月是0月.12月是11月.所以这应该有效:

var d = new Date(2016, 11, 17, 0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

此外,你可以简单地做:

var d = new Date(2016, 11, 17);
Run Code Online (Sandbox Code Playgroud)

  • 为什么月份是基于 0 的,而年、日不是 (8认同)
  • 看来这只是 javascript 从 POSIX/Java 复制的一个古老传统。https://linux.die.net/man/3/localtime ,http://web.mit.edu/java_v1.0.2/www/javadoc/java.util.Date.html#getMonth%28%29 (2认同)
  • 太令人困惑了,我想知道我的 weekOfYear() 函数在 1 月 1 日返回 5 (2认同)

Eli*_*res 18

根据MDN - 日期:

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

你应该从你的月份中减去1.

  • 我发现如果“year”需要是一整年,你可以使用“new Date(0).setFullYear(year,month,day)”来代替 (2认同)