1

我想知道是否有任何方法可以将格式添加(和映射)到 javascript 中的本机日期解析器(不使用库)。

类似于defineParsersMootools 扩展 Date 对象附带的方法,如果您熟悉它,但没有 Mootools。

我能想到的最简单的解决方案是简单地将 Date 原型解析方法替换为包装原始日期并首先将输入日期重新排列为有效格式的方法,如下所示:

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

但是有没有更简单的方法?javascript 是否有任何可访问的数据结构来存储与日期格式及其适当映射有关的信息?

4

1 回答 1

1

我认为你的方法可能是最好的。您本质上只是想向本机方法添加功能。虽然,这不会触及原型,因为 parse 方法是静态的。

这是一个快速示例:

(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上。

于 2012-10-31T17:15:59.590 回答