JavaScript日期:为什么getYear()返回111和2011?

阅读时长 2 分钟读完

当你使用JavaScript中的Date对象时,你可能会遇到一个奇怪的问题:当你调用getYear()方法时,它返回了“111”而不是“2011”。这个问题看起来很奇怪,但实际上它是由于历史原因造成的。

Date对象的历史

在JavaScript创建之初,Date对象的设计者打算使用1970年1月1日作为时间零点。然而,他们忘记了考虑到这一点:1900年是一个闰年,但2000年是一个非闰年。

为了解决这个问题,他们决定将年份保存为从1900年开始的偏移量(即1900年为0,1901年为1等),而不是存储一个完整的四位数年份。这个偏移量可以通过调用getYear()方法获得。

然而,这种方法有一个缺陷:如果你使用getYear()方法在21世纪获取当前年份,它将返回以1900年为基础的年份偏移量,而不是实际的四位数年份。所以,在2011年,getYear()方法返回“111”,而不是“2011”。

解决方案

为了避免这个问题,JavaScript的设计者引入了getFullYear()方法。这个方法返回一个完整的四位数年份,而不是以1900年为基础的年份偏移量。

因此,如果你想要获取当前年份,你应该使用getFullYear()方法而不是getYear()方法。这样可以确保你得到一个正确的四位数年份值。

下面是一个示例代码,展示如何使用getFullYear()方法:

结论

虽然getYear()方法在历史上很有用,但在现代JavaScript中已经不再推荐使用它了。相反,你应该使用getFullYear()方法来获取一个完整的四位数年份值,以避免任何潜在的问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9633

纠错
反馈