我有以下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日星期五10:00:00 MST 2013年7月1日星期一星期一00:00:00 MST


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


  MST 6月01日0112 00:00:00-2013年7月1日星期一


开始日期的年份是0112。为了在IE和Chrome中获得正确的日期范围,我需要怎么做?

最佳答案

为了在IE和Chrome中获得正确的日期范围,我该怎么办?


getFullYear()endDate使用startDate

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


getYear()旨在返回短年份-961996。但是,它的行为因浏览器的不同而有所不同,其日期为1900年代以外的年份。

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


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


IE9返回到您在Chrome中目睹的standardized behavior位置(伪代码):

getYear() == getFullYear() - 1900

关于javascript - 呈现日期的差异-IE JavaScript与Chrome JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17795970/

10-12 13:07
查看更多