我有以下JavaScript代码片段,用于呈现从当月到去年同月的日期范围:
var today = new Date();
var endDate = new Date(today.getFullYear(), today.getMonth(), 1);
var startDate = new Date(endDate.getYear() - 1, endDate.getMonth() - 1, 1);
在IE 8中,它为我提供了正确的日期范围:
Jun Jun 1 00:00:00 MST 2012 - Mon Jul 1 00:00:00 MST 2013
当我在Chrome中运行相同的代码时,我会得到以下日期范围:
Wed Jun 01 0112 00:00:00 MST - Mon Jul 01 2013 00:00:00 MST
开始日期的年份是0112.为了在IE和Chrome中获得正确的日期范围,我需要做些什么?
答案 0 :(得分:5)
为了在IE和Chrome中获得正确的日期范围,我需要做些什么?
对getFullYear()
和endDate
使用startDate
:
var startDate = new Date(endDate.getFullYear() - 1, endDate.getMonth() - 1, 1);
getYear()
旨在为96
返回短年 - 1996
。但是,它的行为在20世纪20年代以外的日期浏览器之间有所不同。
具体而言,IE 4 - 8模仿getFullYear()
其他年份:
在Internet Explorer 4.0到Internet Explorer 8标准模式下,公式取决于年份。对于1900年至1999年,返回的值是一个2位数值,即存储年份减去1900年。对于该范围之外的日期,将返回4位数年份。例如,1996年返回96,但1825年和2025年按原样返回。
IE9返回到您在Chrome中见证的standardized behavior,其中(伪代码):
getYear() == getFullYear() - 1900
答案 1 :(得分:2)
getYear是一个已弃用的函数,它返回年份减去1900.您应该使用getFullYear()代替。