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

Mic*_*ern 1 javascript firefox internet-explorer google-chrome 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);
Run Code Online (Sandbox Code Playgroud)

在IE 8中,它为我提供了正确的日期范围:

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

Jon*_*ski 5

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

使用getFullYear()两个endDatestartDate:

var startDate = new Date(endDate.getFullYear() - 1, endDate.getMonth() - 1, 1);
Run Code Online (Sandbox Code Playgroud)

getYear()旨在返回短短的一年- 961996.但是,它的行为在20世纪20年代之外的日期浏览器之间有所不同.

具体来说,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
Run Code Online (Sandbox Code Playgroud)