[Javascript] 현재 날짜/시간 항상 한국 시간으로 가져오기
April 06, 2024
Javascript에서 현재 시간을 가져올 때, 시스템 설정과 관계 없이 항상 한국 시간으로 가져오는 방법에 대해서 알아보겠습니다.
1. 시스템에 설정된 현재 시간/날짜 가져오기
new Date()
는 시간/날짜 정보를 갖고 있으며, 시스템에 설정된 지역의 시간 기준으로 출력됩니다.
document.writeln()
으로 Date를 출력하면 시스템 설정 시간 기준으로 출력- get 함수로 가져온 년/월/일, 시/분/초 정보는 시스템 설정 지역의 시간으로 출력
console.log()
로 Date를 출력하면 UTC 시간이 출력됨
아래와 같이 Date 객체에서 날짜, 시간 정보를 읽을 수 있습니다.
const currentTime = new Date();
document.writeln(currentTime);
console.log(currentTime);
// 년, 월, 일 정보 얻기
const year = currentTime.getFullYear();
const month = currentTime.getMonth() + 1; // 월은 0부터 시작하므로 1을 더해줘야 실제 월 값이 됨
const day = currentTime.getDate();
// 시, 분, 초 정보 얻기
const hours = currentTime.getHours();
const minutes = currentTime.getMinutes();
const seconds = currentTime.getSeconds();
// 현재 날짜와 시간 출력
console.log(`현재 날짜: ${year}-${month}-${day}`);
console.log(`현재 시간: ${hours}:${minutes}:${seconds}`);
Output:
2023-08-22T11:35:53.514Z
현재 날짜: 2023-8-22
현재 시간: 20:35:53
2. 항상 현재 한국 시간/날짜 가져오기
시스템 설정과 무관하게, 항상 한국의 현재 시간/날짜 정보를 가져오려면, Date에서 UTC 시간을 계산하고, UTC에서 한국의 시간차(9시간)를 더한 Date 객체를 만들면 됩니다.
- UTC가 영국 기준이고, 한국은 UTC + 9시간이기 때문에, 이렇게 계산하면 항상 한국 기준 시간으로 보여짐
Date.getTimezoneOffset()
는 UTC와 현재 시스템 설정 시간의 시간 차(offset)를 분 단위로 리턴- offset을 ms 단위로 변환하고 현재 시간에 더하면 UTC 시간을 계산할 수 있음
const now = new Date(); // 현재 시간
const utcNow = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
const offset = 9 * 60 * 60 * 1000;
const curTimeInKorea = new Date(utcNow + offset)
// 년, 월, 일 정보 얻기
const year = curTimeInKorea.getFullYear();
const month = curTimeInKorea.getMonth() + 1;
const day = curTimeInKorea.getDate();
// 시, 분, 초 정보 얻기
const hours = curTimeInKorea.getHours();
const minutes = curTimeInKorea.getMinutes();
const seconds = curTimeInKorea.getSeconds();
// 현재 날짜와 시간 출력
console.log(`현재 날짜: ${year}-${month}-${day}`);
console.log(`현재 시간: ${hours}:${minutes}:${seconds}`);
Output:
"현재 날짜: 2023-8-22"
"현재 시간: 20:50:46"