渲染日期的差异 - IE JavaScript与Chrome JavaScript

时间:2013-07-22 19:38:14

标签: javascript internet-explorer google-chrome firefox date

我有以下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中获得正确的日期范围,我需要做些什么?

2 个答案:

答案 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()代替。