当你使用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()方法:
const date = new Date(); const year = date.getFullYear(); console.log(year); //输出:2011(如果当前年份是2011)
结论
虽然getYear()方法在历史上很有用,但在现代JavaScript中已经不再推荐使用它了。相反,你应该使用getFullYear()方法来获取一个完整的四位数年份值,以避免任何潜在的问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/9633