1

我有以下 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 中,它给了我正确的日期范围:

2012 年 6 月 1 日星期五 00:00:00 MST - 2013 年 7 月 1 日星期一 00:00:00 MST

当我在 Chrome 中运行相同的代码时,我得到以下日期范围:

周三 6 月 1 日 0112 00:00:00 MST - 周一 2013 年 7 月 1 日 00:00:00 MST

开始日期的年份是 0112。我需要做什么才能在 IE 和 Chrome 中获得正确的日期范围?

4

2 回答 2

5

为了在 IE 和 Chrome 中获得正确的日期范围,我需要做什么?

用于和:getFullYear()_endDatestartDate

var startDate = new Date(endDate.getFullYear() - 1, endDate.getMonth() - 1, 1);

getYear()意在归还短短的一年——961996。但是,对于 1900 年代以外的日期,它的行为因浏览器而异。

具体来说,IE 4 - 8模仿getFullYear()其他年份:

在 Internet Explorer 4.0 到 Internet Explorer 8 标准模式下,公式取决于年份。对于 1900 到 1999 年,返回的值是 2 位数的值,即存储的年份减去 1900。对于超出该范围的日期,返回 4 位数的年份。例如,1996 返回为 96,但 1825 和 2025 按原样返回。

IE9 回到了您在 Chrome 中看到的标准化行为,其中(伪代码):

getYear() == getFullYear() - 1900
于 2013-07-22T19:48:30.690 回答
2

getYear 是一个已弃用的函数,它返回减去 1900 的年份。您应该改用 getFullYear()。

于 2013-07-22T19:47:37.197 回答