2010-03-19 144 views

回答

2

在標題中的問題:不原生地(因爲你已經測試了:))

在ECMA- 262(3/e)Date.parse[15.9.4.2]的唯一要求是通過.toString().toUTCString()的往返轉換不會更改Date對象,即

Date.parse(x.toString()) == Date.parse(x.toUTCString()) == x 

兩者.toString()[15.9.5.2].toUTCString()[15.9.5.42]是實現相關的,所以什麼格式Date.parse可以解析是完全不確定的。

3

正如其他人所提到的,它不在第3版規範中。然而,在第5版規範中,我引用了:

ECMAScript根據ISO 8601擴展格式的簡化定義了日期時間的字符串交換格式。的格式如下:YYYY-MM-DDTHH:MM:ss.sssZ

所以應該很快滴入瀏覽器(IE9,鉻1,火狐4是至少一些支持ISO的瀏覽器8601日期)。如果你想實現在其間的解決方案,您可能需要優化,使你的腳本可以採取原生如果可用的優勢:

(function() 
{ 
    if (isNaN(Date.parse("2010-02-23T23:04:48Z"))) 
    { 
     var oldParse = Date.parse; 
     Date.parse = function (strTime) 
     { 
      // regex test strTime for ISO 8601, use oldParse if it isn't 
      // Use custom parser if it is. 
     } 
    } 
})();