JavascriptJavaScript中Date对象取值month为什么是从0开始

3

JavaScript中Date对象取值month为什么是从0开始

Date对象 阅读:3760 时间:2018年09月05日

在JavaScript中,Date对象的getMonth()方法返回的月份需要+1,如取当前月份:var oDate = new Date(); console.log( oDate.getMonth()+1 ...

在JavaScript中,Date对象的getMonth()方法返回的月份需要+1,如取当前月份:

var oDate = new Date();
console.log( oDate.getMonth()+1 );//取当前月份,需要加1
console.log( oDate.getFullYear() );//取当前年份,不需要加1
console.log( oDate.getDate() );//取当前日,不需要加1

然而取年份,取日,时,分,秒则不需要,为什么只有月份要+1,这让很多JavaScript开发者不解,以为会有什么不得以的原因。经过查阅资料才知道就是一个坑。


科学解释:因为 JavaScript 的 Date 实现是从 Java JDK 1.0 里抄来的,这个坑是Java挖的。除了这个坑,还有 getYear 返回的是当前年份减去 1990 的差 2017-1990 = 117。

这是JavaScript之父自己在Twitter上说的:

image.png


还有一种看似十分说的通的民间解释:

因其它如年,日,时,分,秒都是数字,所以从1开始没什么问题。然而月份是有英文名称的 January、February...,它们存于数组中["January","February",...],所以是从0开始就说的通了。


所以Datel.getMonth()是0~11其实没什么技术原因。完全是JavaScript语言的创作者抄Java JDK时,连这个坑也抄来了。后面因为要考虑语言的向下向上兼容问题,这个坑也就没有改了。

发表评论说说你的看法吧

  • 访客
    访客 2021-05-14 12:53:27
    按照你说的的话 星期也是 Monday Tuesday。。 他们怎么不是从0开始呢?
  • lenton
    lenton 2022-05-18 13:55:13
    按照你说的的话 星期也是 Monday Tuesday。。 他们怎么不是从0开始呢?
    -----
    原生Date对象没有处理week

精品模板蓝瞳原创精品网站模板

^