2013-07-22 102 views
1

我有我用於渲染的日期範圍從目前的月份爲去年同月的JavaScript代碼下面的代碼片段:差異呈現日期 - IE的JavaScript與瀏覽器的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它給了我正確的日期範圍:

週五6月1日00:00:00 MST 2012 - 週一07月01日00:00:00 MST 2013

當我運行在Chrome相同的代碼,我得到以下日期範圍:

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

年開始日期是0112.什麼我需要做什麼才能在IE和Chrome中獲得正確的日期範圍?

+0

「的得到年方法返回的年份減去1900」 - 見[MDN(HTTPS:/ /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear) – metadings

回答

5

我需要做什麼才能在IE和Chrome中獲得正確的日期範圍?

使用getFullYear()兩個endDatestartDate

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

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見證standardized behavior其中(僞代碼):

getYear() == getFullYear() - 1900 
+0

感謝您的詳細解釋和答案。 –

2

getYear是一個棄用的函數,它返回年份減去1900.您應該使用getFullYear()來代替。