2010-06-14 101 views
0

我很好奇什麼是擴展Date構造函數的最佳實踐。延長Javascript日期對象

我現在面臨的問題是,該Internet Explorer (< 7+8)無法解析的日期一樣

new Date('2010-05-11'); 

我不得不承認,這不是分析的標準方法,反正FireFoxChrome以及執行那種日期字符串。

現在我想知道,我應該在調用新的Date()之前拆分/解析/重建字符串嗎?還是有更優雅的解決方案?

更新

我會非常喜歡本地的js方法來實現這一目標。如果沒有辦法 以某種方式添加一個自定義分析我只會轉換日期字符串。

回答

2

我認爲使用庫進行日期解析幾乎總是可以獲得回報的,而不是依賴於瀏覽器的本地解析功能。

離開他們所帶來的絨毛,您的應用程序應該是能夠解析簡單的日期,如你(YYYY-MM-DD)在所有瀏覽器一致的方式最起碼的。

如果瀏覽器無法保證這一點,那麼將日期字符串操作爲安裝所有瀏覽器的格式沒有意義。如果源字符串本身是非標準格式,例如2010-06-08-12:29:53(注意第三個短劃線),我最近在這個feed上遇到過,那麼標準化它可能是有意義的,然後您又回到相​​同的問題 - 本地解析(IMO是個壞主意)或使用庫。

2

DateJS會解析各種不同的字符串,但如果你只是在做一些小事情,你可能不需要它。分流/解析/重建IMO比連接另一個腳本到您的網頁更優雅:

var dStr = '2010-05-11'.split('-'); 
var d = new Date(dStr[0], dStr[1] - 1, dStr[2]); 

只需記住Date()月份參數從零開始,而日期參數是沒有的。奇怪,我知道。

+0

這正是我現在正在做的。我只是希望有一個本地方法來以某種方式擴展Date對象本身(這對我來說似乎更加優雅)。這更像是一個學術問題。 +1無論如何 – jAndy 2010-06-14 14:08:18

+0

@jAndy:我不知道任何本地解決方案,缺少包裝'Date()'或'Date.parse()'。 – 2010-06-14 14:32:14