2012-10-31 2 views
1

(라이브러리를 사용하지 않고) javascript의 원시 날짜 파서에 형식을 추가 (및 맵핑) 할 수있는 방법이 있는지 궁금합니다.기본 날짜 파서에 형식 추가

Mootools 확장 Date 개체와 함께 제공되는 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

나는 아마도 당신의 접근 방식이 최고라고 생각합니다. 기본적으로 네이티브 메소드에 기능을 추가하기 만하면됩니다. 비록 파싱 메소드가 정적이기 때문에 이것은 프로토 타입을 건들지 않을 것이다. 이 jsfiddle에 여기

(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")); 

:

여기에 빠른 샘플입니다.