2012-11-29 4 views
0

우리는 사용자 정의 시간대에 모든 날짜를 표시해야하는 응용 프로그램을 개발 중입니다. 자바 스크립트 날짜가 사용되는 외부 라이브러리 (GWT ...)를 사용합니다. GWT 코드를 재정의 할 수 없습니다. 또한 자바 스크립트 날짜가 사용자 정의 시간대를 설정하는 더 좋은 장소 인 것 같습니다. 우리는 프로토 타입 메커니즘을 사용하여 "접근"우선 먼저 시도 :브라우저 표준 시간대와 다른 시간대를 사용하는 방법은 무엇입니까?

var original_getUTCHours = Date.prototype.getUTCHours; 
Date.prototype.getUTCHours = function(){ 
    // -4 for the time zone offset 
    return original_getUTCHours.call(this)-4; 
} 
var myDate = new Date(); 
alert(myDate.getUTCHours()); 

을하지만,이 메커니즘은 오버라이드 (override) "접근"이 많이 있기 때문에 구현이 긴 것 같다. 각 접근자는 오프셋을 처리하는 특정 알고리즘이 필요합니다.

그래서 프로토 타입 메커니즘을 사용하여 Date 생성자를 ovveride하려고했습니다.

Uncaught TypeError: Object function Date(){ 

var now = original_date_constructor; 
original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds()); 
} has no method 'getUTCFullYear' 

는 날짜 생성자를 오버라이드 (override)하는 것이 가능하고 올바른 방법은 무엇입니까 :

var original_date_constructor = Date.prototype.constructor; 

function Date(){ 
    var now = original_date_constructor; 
    original_date_constructor(now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate(),now.getUTCHours()-4,now.getUTCMinutes(),now.getUTCSeconds(),now.getUTCMilliseconds()) 
} 

그러나 우리는 크롬 디버거에서이 오류를 얻을?

Date.prototype = original_date_constructor.prototype; 
+0

당신은 날짜 생성자를 덮어 쓰지해야

감사 – Bergi

답변

0

당신은 다시 적용 Date 프로토 타입에 필요합니다. 못. 대신, UTC 날짜를 사용하고 서식 설정을 위해서만 시간대를 가져 오십시오.
+0

프로토 타입을 다시 적용해야합니까? 완전한 예제를 제공해 줄 수 있습니까? – gontard

관련 문제