2012-01-05 1 views
-1

Date 개체를 항상 4 시간 오프셋으로 조정하려고합니다. 나는 이것을 어떻게 얻을 수 있을까?모든 시간이 4 시간 오프셋되도록

var d = new Date(); 
// d would be 4 hours in the past 
+1

를 호출하여 문제를 해결할 수 있습니다. 해결하려는 더 큰 문제는 무엇입니까? 게다가 '날짜'의 행동을 바꾸면 문서화 된 기존 계약이 깨어지며 최소한의 놀라움의 원칙을 위반하게되고 널리 선한 것으로 간주되는 다른 여러 가지 사항을 위반하게됩니다. –

+3

'시작 -> 제어판 -> 날짜/시간 설정' –

+0

/당신은/실제로 /하려고합니까? – Dan

답변

0

당신은 특정 날짜와 날짜 개체를 만들 수 있습니다. 그냥 현재 시간에서 올바른 밀리 초를 빼고 날짜 기능 되었 :

var d = new Date(new Date().getTime() - 1000*60*60*4); 

또는 수동으로 시간이 같은

var d = new Date(); 
d.setHours((12 + (d.getHours() - 4))%12) 
+0

이것은 OP가 원한 것이 아니라고 생각하는 하나의 'Date' 인스턴스를 변경합니다. –

+1

@ MДΓΓLLLL 당신이 의미하는 바를 알았지 만 이것이 어떻게 행해져 야 하는가입니다. 날짜 객체의 인스턴스로 작업하기. –

+0

Date 개체를 수정해야합니다. 못생긴하지만 일을 끝내기 위해 내가해야 할 일. 고마워, – user721081

0

뭔가 설정할 수 있습니다

d.setHours(d.getHours()-4); 
+0

이것은 내가 생각하기에 OP가 원하는 것이 아니라 단지 하나의 'Date' 인스턴스를 변경합니다. –

+0

모든 Date 개체에 대해 변경해야합니다. – user721081

2
Date.withOffset = function(offset){ 
    var r = new Date(); 
    r.setHours(r.getHours()+offset); 
    return r; 
}; 

var d = Date.withOffset(-4) 
// d would be 4 hours in the past 

더 좋은 이름을 제안 할 수 있습니다. 당신은 물론 사용의 수도 페이지에 모든 자바 스크립트를 중단하고자하는 경우

:

Date = function() { 
    var old = Date; 

    function broken() { 
     var r = new old(); 
     r.setHours(r.getHours()-4); 
     return r; 
    } 
    broken.fix = function() { 
     Date = old; 
    }; 

    return broken; 
}(); 

당신은 정말 추한 해킹없이, 당신은 할 수 없습니다 Date.fix()

+0

시스템 시간을 수정할 수 없습니다. 셋톱 박스를 작동하고 있으며 시간은 항상 GMT입니다. 모든 Date 객체에 대해 과거 4 시간까지의 시간이 필요합니다. 나는 그것이 추한 것을 알고 모범 사례에 반대하지만 이것은 내가해야 할 일입니다 ... – user721081

+0

위의 날짜 기능이 작동하지 않습니다. – user721081

관련 문제