javascript中new Date()的瀏覽器兼容性問題

javascript中new Date()的瀏覽器兼容性問題javascript

 

 Date.parse(new Date($.trim($this.val().replace(/-/g,"/"))))html

 

 Date.parse(new Date($.trim($this.val().replace(/-/g,"/"))))/1000 java

 

主要是日期格式的問題,只有chrome才能識別2018-07-11這樣的橫杆格式,須要改爲2018/7/1這樣的格式chrome

參考網址:瀏覽器

https://www.2cto.com/kf/201504/388173.html函數

 

引言: 同一種語言javascript,在不一樣的瀏覽器中,存在語言兼容性問題,本質上是因爲不一樣的瀏覽器是支持的語言標準和實現上各有差別。本文將基於new Date來建立Date對象來分析這個問題。this

1. 問題的提出, 開始時間和結束時間空間沒法正確的傳遞值spa

在頁面中,咱們使用了一個時間上的組件來開發時間選擇框,可是發如今Firefox下是沒法正常工做的,在Chrome下是能夠正常運行的。 問題出在哪裏呢?3d

2. 問題分析code

結果分析發現是因爲以下代碼產生的問題:

?
1
2
3
4
5
6
var timestart = '2010-05-04' ;
var timeend = '2015-04-01' ;
var time1 = (timestart+ ' 00:00:00' ).toString();
var time2 = (timeend+ ' 23:59:59' ).toString();
timestart = new Date(time1);
timeend = new Date(time2);

 

問題就在於 new Date(time1)這個構造函數沒法正確的生成Date對象,其值爲NaN. 怪哉,問題在哪裏呢?

3. 各個瀏覽器上的表現

在IE下的執行狀況:

\

在Firefox下的執行狀況:

\在Chrome下的執行狀況:

\

經過以上的分析,能夠得知,這個javascript的腳本在Chrome下是能夠正確執行的,可是在其餘瀏覽器下報出錯誤。

4. 正確的作法

如下列出正確的作法:

?
1
2
3
4
var time1 = (timestart+ ' 00:00:00' ).toString();
var time2 = (timeend+ ' 23:59:59' ).toString();
timestart = new Date(Date.parse(str.replace(/-/g, "/" ))).getTime();
timeend = new Date(Date.parse(str.replace(/-/g, "/" ))).getTime();

主要的變化是對默認的日期格式進行了轉換, 基於'/'格式的日期字符串,纔是被各個瀏覽器所普遍支持的,‘-’鏈接的日期字符串,則是隻在chrome下能夠正常工做。

 

5. 知識點總結

'2015-05-04'是沒法被各個瀏覽器中,使用new Date(str)來正確生成日期對象的。 正確的用法是'2015/05/05'.

相關文章
相關標籤/搜索