작성자: BUILDER.COM
JavaScript 스크립트를 사용하면 사용자의 시계를 직접 확인하여 웹 페이지에 현지 시간을 쉽게 표시할 수 있다는 점에는 의심의 여지가 없습니다. 하지만 다른 지역의 시간을 표시하려면 어떻게 해야 할까요? 예를 들어 본사가 다른 국가에 있고 현지 시간 대신 "홈" 시간을 보려는 경우는 어떻게 될까요?
이를 위해서는 현지 시간을 목적지 시간으로 변환하기 위한 다양한 시간 계산이 수행되어야 합니다. 이 문서에서는 이러한 계산을 수행하는 방법을 설명합니다.
1단계:
첫 번째 단계는 현지 시간을 확인하는 것입니다. JavaScript에서는 Data() 개체를 초기화하여 이 작업을 쉽게 수행할 수 있습니다.
// 현재 위치에 대한 Date 객체 생성
d = new Date();
Data() 객체의 getTime() 메서드를 호출하면 1970년 1월 1일과 현재 시간 사이의 밀리초 수를 표시할 수 있습니다.
// 1970년 1월 1일 이후의 msec로 변환
localTime = d.getTime();
2단계:
다음으로 Data() 객체의 getTimezoneOffset() 메서드를 통해 현지 시간 오프셋 값을 찾습니다. 기본적으로 이 방법은 시간대 오프셋 값 결과를 분 단위로 표시하므로 이 값은 이전 계산에서 밀리초로 변환됩니다.
// 로컬 UTC 오프셋을 가져와 msec로 변환
localOffset = d.getTimezoneOffset() * 60000;
getTimezoneOffset() 메서드의 음수 반환 값은 현지 시간이 UTC(세계 표준시) 이전임을 나타내고 양수 반환 값은 값은 협정 세계시(UTC) 이후의 현지 시간을 나타냅니다.
참고: 60,000의 곱셈 인자를 어떻게 얻었는지 궁금하신 경우 1,000밀리초는 1초와 같고 1분은 60초와 같다는 점을 기억하세요. 따라서 분을 밀리초로 변환하려면 60에 1,000을 곱하면 60,000이 됩니다.
세 번째 단계
는 현지 시간과 현지 시간대 오프셋 값을 추가하여 현재 국제 표준시(UTC)를 얻는 것입니다.
// UTC 시간을 밀리초 단위로 가져옵니다.
utc = localTime + localOffset;
여기서 변수 utc에는 현재 국제 표준시(UTC)가 포함됩니다. 그러나 이 시간은 1970년 1월 1일부터 현재까지의 밀리초 단위로 표현된다. 아직 해야 할 계산이 남아 있으므로 지금은 이렇게 표현하겠습니다.
네 번째 단계는
국제 표준시(UTC)를 획득한 후, 대상 도시의 국제 표준시(UTC)의 시간별 오프셋 값을 획득하여 이를 밀리초로 변환하고 국제 표준시(UTC)를 추가하는 것이다.
// 목적지의 UTC 시간 오프셋을 얻어서 추가합니다
. // 예를 들어 Bombay
는 UTC + 5.5시간
offset = 5.5입니다.
Bombay = utc + (3600000*offset)
참고: 곱셈을 위해 3600000을 어떻게 구했는지 궁금합니다. 1000밀리초는 1초와 같고, 1시간은 3600초와 같다는 점을 기억하세요. 따라서 시간을 밀리초로 변환하려면 3600에 1000을 곱하면 3600000이 됩니다.
이때 변수 Bombay에는 인도 뭄바이의 현지 시간이 포함됩니다. 이 현지 시간은 1970년 1월 1일부터 현재까지의 밀리초 단위로 표시됩니다. 분명히 이것은 말이 되지 않으므로 몇 가지 계산을 해야 합니다.
다섯 번째 단계
는 새로운 Data() 객체를 초기화하고 이 객체의 toLocalString() 메서드를 호출하는 것입니다. 이전 단계에서 계산된 시간 값을 누구나 이해할 수 있는 날짜/시간 문자열로 변환합니다.
// msec 값을 날짜 문자열로 변환
nd
= new Date(bombay);
document.writeln("봄베이 시간은 " + nd.toLocaleString() + "<br>");
위 단계를요약
하고 이해한 후 모든 계산을 수행하고 시간 값을 반환하는 간단한 사용자 정의 함수 calcTime()을 생성하는 이 스크립트(목록 A)를 다시 살펴보겠습니다.
목록 A
<html>
<head>
<script 언어="JavaScript">
//다른 도시의
현지 시간을 계산하는 함수
// // 해당 도시의 UTC 오프셋이 주어졌을 때
function calcTime(city, offset) {
// Date 객체 생성 현재 위치
d = new Date();
// 밀리초로 변환
// 현지 시간대 오프셋 추가
// 밀리초 단위로 UTC 시간 가져오기
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
//
제공된 오프셋을 사용하여 //
다른 도시에 대한 새 Date 객체를 만듭니다
.nd = new Date(utc + (3600000*offset));
// 시간을 문자열로 반환
return "The local time in " + city + " is " + nd.toLocaleString()
}
// 봄베이 시간 가져오기
Alert(calcTime('Bombay', '+5.5'))
; 싱가포르 시간 가져오기
Alert(calcTime('Singapore', '+8'));
// 런던 시간 가져오기
Alert(calcTime('London', '+1'))
</script>
</head>
<body>
< /body>
</html>
여기서 calcTime() 함수는 도시 이름과 UTC(Universal Coordinated Time) 오프셋 값(시간 단위)을 허용합니다. 그런 다음 위에서 설명한 모든 계산을 내부적으로 수행하고 이 도시의 현지 시간이 포함된 문자열을 반환합니다.
다음은 목록 A의 출력 샘플 중 일부입니다.
뭄바이 현지 시간은 2005년 8월 1일 월요일 오후 4
시 43분 51초입니다. 싱가포르 현지 시간은 2005년 8월 1일 월요일 오후 7시 13분 51초
입니다. 런던 현지 시간은 2005년 8월 1일 월요일 오후 12시 13분 51초입니다.
다음에 웹 페이지에 대한 시간대 스크립트를 작성하려고 앉을 때 이 스크립트를 사용하면 시간을 절약할 수 있을 것입니다. 즐기다! !