node.js:奇怪的setUTCMonth结果

在最新的0.8和0.10版本的节点中运行这个代码:

> date = new Date(2013, 0, 1) Tue Jan 01 2013 00:00:00 GMT+0200 (EET) > date.setUTCMonth(5) 1341180000000 > date Mon Jul 02 2012 01:00:00 GMT+0300 (EEST) 

.setUTCMonth被调用后,2013年到2012年发生了变化。 为什么会发生?

.setUTCMonth被调用后,2013年到2012年发生了变化。

不,它没有。

您当地的时区是GMT+0200 ,也就是说,您所看到的date为Tue Jan 01 2013 00:00:00 GMT+0200 ,实际上是格林威治时间早两个小时,所以是2012年12月31日22:00:00。

并将date的月份更改为5 从而使修改后的date最终在2012年7月结束。