Javascript 使用 setMonth 时的日期问题
Javascript Date issue when using setMonth
在开发 firefox 附加组件时,以下给出了不同的结果?
var out = document.getElementById('out');
out.textContent += new Date(2015, 1, 6, 16, 0, 0, 0) + '\n'; // -> Date "2015-02-06T15:00:00.000Z" correct, months are zero-based
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(1);
dt.setDate(6);
dt.setHours(16);
out.textContent += dt + '\n'; // -> Date "2015-03-06T15:00:00.000Z" ??
<pre id="out"></pre>
问题是 setMonth(1) 在第二种情况下设置了三月。
这发生在任意日期,其他日期对这两种方法都适用。知道为什么吗?
var out = document.getElementById('out');
out.textContent += new Date(2015, 0, 30, 16, 0, 0, 0) + '\n'; // -> 2015-01-30T15:00:00.000Z" months are zero-based
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(0);
dt.setDate(30);
dt.setHours(16);
out.textContent += dt + '\n'; // -> 2015-01-30T15:00:00.000Z
<pre id="out"></pre>
这是因为包装,与 Firefox 或 Firefox 插件无关。
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(1);
dt.setDate(6);
dt.setHours(16);
原来,dt
是 1899 年 12 月 31 日。
现在,我们将其设置为 2015 年:2015 年 12 月 31 日
这个月变成了二月,但是因为二月只有 28 天,所以它绕到三月:2015 年 3 月 3 日
然后,当然,日期是第六个,所以是 3 月 6 日。
在开发 firefox 附加组件时,以下给出了不同的结果?
var out = document.getElementById('out');
out.textContent += new Date(2015, 1, 6, 16, 0, 0, 0) + '\n'; // -> Date "2015-02-06T15:00:00.000Z" correct, months are zero-based
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(1);
dt.setDate(6);
dt.setHours(16);
out.textContent += dt + '\n'; // -> Date "2015-03-06T15:00:00.000Z" ??
<pre id="out"></pre>
问题是 setMonth(1) 在第二种情况下设置了三月。 这发生在任意日期,其他日期对这两种方法都适用。知道为什么吗?
var out = document.getElementById('out');
out.textContent += new Date(2015, 0, 30, 16, 0, 0, 0) + '\n'; // -> 2015-01-30T15:00:00.000Z" months are zero-based
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(0);
dt.setDate(30);
dt.setHours(16);
out.textContent += dt + '\n'; // -> 2015-01-30T15:00:00.000Z
<pre id="out"></pre>
这是因为包装,与 Firefox 或 Firefox 插件无关。
var dt = new Date(0, 0, 0, 0, 0, 0, 0);
dt.setFullYear(2015);
dt.setMonth(1);
dt.setDate(6);
dt.setHours(16);
原来,dt
是 1899 年 12 月 31 日。
现在,我们将其设置为 2015 年:2015 年 12 月 31 日
这个月变成了二月,但是因为二月只有 28 天,所以它绕到三月:2015 年 3 月 3 日
然后,当然,日期是第六个,所以是 3 月 6 日。