2012-10-04 3 views
1

우리 조직의 모든 사람들이 좋아하는 IE 즐겨 찾기 목록에 작업 스크립트가 있습니다 (아래 참조). 사무실이 회사의 지리적 위치에 따라 4 개의 URL 중 1 개로 연결됩니다. 내가 궁금하고 어떤미국을위한 javascript timezone 스크립트 일광 절약 시간제 사용 방법

<html> 
<body> 

<script language="JavaScript"> 
var today = new Date(); 
var offset = (today.getTimezoneOffset()/60) + 1; 
if (offset == 5) document.location.href = "url=EASTERNtime.com"; 
else if (offset == 6) document.location.href = "url=CENTRALtime.com"; 
else if (offset == 7) document.location.href = "url=MOUNTAINtime.com"; 
else if (offset == 8) document.location.href = "url=pacifictime.com"; 
else document.location.href = "url=pickyourowntimezone.com"; 

</script> 
</body> 
</html> 

일광 절약 시간이 나는 우리가 애리조나에 사무소를 알고 있기 때문에 내 스크립트에 영향을 미칠 것입니다 그리고 그들은 그것을 인식하지 않는 방법이다. 사람들이 여전히 올바르게 전달되도록하기 위해 스크립트로 변경해야하는 것은 무엇입니까? 나는 이해가

합니까 ...

날짜가 3 월 11부터 11 월 4 일 사이 인 경우

가없는 경우이 ... ...이 실행 실행 .. 뭔가를 생각? 아니면 이것에 대해 걱정할 필요가 있습니까? 그리고 시계가 바뀌거나 변하지 않을 때 모든 것이 자체적으로 분류됩니까?

답변

0

http://www.pageloom.com/automatic-timezone-detection-with-javascript에는 꽤 강력한 시간대 탐지 스크립트가 있습니다. 비공식 코드는 https://bitbucket.org/pellepim/jstimezonedetect/src/e265c8eddec7/detect_timezone.js에 있습니다.

+0

하드 코딩 된 날짜를 사용하므로이 방법이 도움이 될지 모르겠습니다. 권리? 내가하고 싶은 일은 다음 5 년 동안 만지거나 걱정할 필요가없는 페이지를 설정하는 것입니다. – user1601517

+0

아니요, 하드 코딩 된 날짜는 사용자가 속한 표준 시간대를 결정하는 데 사용되는 테스트 날짜입니다. 업데이트해야하는 유일한 시간은 현재 표준 시간대가 실제로 다시 정의되지 않는 경우입니다 (Minsk 벨로루시에서 분명히 일어난) 2011 년과 동일하게 정의되었습니다. 이것이 미국에서 일어난 마지막 시간은 1987 년 이전의 2007이었습니다. – Bill

1

내 날짜 확장 식별하는 방법 DST가 있습니다

는 날짜가 현지 DST 내에서, "false"로 떨어질 것으로 보인다 경우 dateinstance .isDST() 메소드가 "true"를 반환합니다

http://depressedpress.com/javascript-extensions/dp_dateextensions/

그렇지 않다면.

그러나 일반적인 생각은 정말 단순하고 마음이 구부러지기 때문에 (실제로는 멍청한 추측이므로) 모두 끔찍한 생각입니다. 기본적으로 DST (또는 유사한 구성표)가 사용되고 시작일과 종료일이 정의 된 곳에서는 1 월 1 일의 시간대 오프셋이 7 월 1 일과 같지 않습니다. (! I 아이) 남반구 거꾸로 모두 잘못을 수행한다는 사실을 존중하는 몇 가지 코드에 추가하는 간단한 기능을 특정 날짜 (내 확장에 사용되는)를 결정하는 것은 :

 // isDST 
     // Returns "true" if the date appears to fall within the local area's Daylight Saving Time (or similar scheme), returns false if the date does not (or it appears that the region doesn't observe DST). 
Date.prototype.isDST = function() { 

     // Generate test dates 
    var Jan1 = new Date(this.getFullYear(), 0); 
    var Jul1 = new Date(this.getFullYear(), 6); 

     // DST in the Northern hemisphere is "fall back" 
    if (Jan1.getTimezoneOffset() > Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jan1.getTimezoneOffset()){ 
     return true; 
    }; 
     // DST in Southern hemisphere is "leap ahead" 
    if (Jan1.getTimezoneOffset() < Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jul1.getTimezoneOffset()){ 
     return true; 
    }; 
     // We're not in DST 
    return false; 
}; 

솔루션 사용 TZ 데이터베이스는 어느 표준 시간대가 사용되는지를 결정할 수 있다는 점에서보다 강력합니다. 그러나 시작 시간과 종료 시간에 대한 규칙이 종종 유동적이기 때문에 시간이 DST에 있는지 여부를 결정할 때도 마찬가지로 지장이 없습니다.

귀하의 필요에 따라, 위의 코드가 트릭을 수행해야한다고 생각합니다.

+0

위의 코드가 어떻게 도움이 될지 모르겠습니다. DST를 작동 시키려면 날짜를 입력해야하지만 매년 날짜가 달라야한다고 말하고 있습니다. 그 달의 첫 번째 일요일 ... 그래서 ... 그게 어떻게 효과가 있니? – user1601517

+0

위의 함수가 작동하려면 예제 날짜가 있어야합니다. 이 함수는 날짜 (원하는 날짜)가 스크립트가 실행되는 지역의 DST (또는 유사한) 내에 있는지 알려줍니다. 귀하의 경우 나는 그것이 현재 날짜라고 가정합니다. 내년이 아니라 지금 그들이 어디로 가야 할 것인가? DST가 시작되거나 끝날 때 코드가 정확히 알 필요는 없습니다. 현재 DST가 없다는 것을 알고있는 날짜와 현재 날짜를 비교하는 것뿐입니다. 날짜가 같으면 DST 밖에 있습니다. 차이가 있다면 DST 안에 있습니다. –

관련 문제