2012-10-31 46 views
1

我想知道是否有任何方式將JavaScript(不使用庫)添加(和映射)格式到本機日期解析器中。將格式添加到本機日期解析器

類似於MooTools擴展日期對象附帶的defineParsers方法,如果您熟悉它,但沒有Mootools。

我能想到的最簡單的解決方法是簡單地用一個包裝了原始的和重新排列輸入日期以有效的格式第一,這樣的更換日期原型解析方法:

Date.prototype.parse = (function(oldVersion) { 
    function extendedParse(dateString) { 
     //change dateString to an acceptable format here 
     oldVersion(dateString); 
    } 
    return extendedParse; 
})(Date.prototype.parse); 

但有更簡單的方法?是否有任何可訪問的數據結構javascript用來存儲有關日期格式及其適當映射的信息?

回答

1

我認爲你的方法可能是最好的。你基本上只是想爲本地方法添加功能。雖然,這不會觸及原型,因爲解析方法是靜態的。

下面是一個簡單示例:

(function() { 

    ​var nativeParse = Date.parse; 
    var parsers = []; 

    ​Date.parse = function(datestring) { 
     for (var i = 0; i<parsers.length; i++) { 
      var parser = parsers[i]; 
      if (parser.re.test(datestring)) { 
       datestring = parser.handler.call(this, datestring); 
       break; 
      } 
     } 
     return nativeParse.call(this, datestring); 
    } 

    Date.defineParser = function(pattern, handler) { 
     parsers.push({re:pattern, handler:handler}); 
    } 

}()); 

Date.defineParser(/\d*\+\d*\+\d*/, function(datestring) { 
    return datestring.replace(/\+/g, "/"); 
}); 

console.log(Date.parse("10+31+2012")); 

這是jsfiddle