티스토리 뷰
자바스크립트 현재 날짜와 시간 항상 한국 기준으로 구하기
참고: https://hianna.tistory.com/451
업무 중 현재 시간을 기준으로 이런저런 값을 계산할 일이 있었다. 근데 동료가 만약 우리나라가 아니라 다른 국가에서 접속하는 유저는 어떻게 처리하겠냐는 질문을 했다.
그래서 어디서 접속하든 언제나 한국 시간을 기준으로 잡아야 할 필요를 느꼈다.
필요한 것들
Date.prototype.getTime()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime
1970 년 1 월 1 일 00:00:00 UTC와 주어진 날짜까지의 시간을 밀리세컨드로 반환한다.
Date.prototype.getTimezoneOffset()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
현재 사용자 PC 설정 시간대로부터 UTC 시간까지의 차이를 '분'단위로 반환한다.
예를들어, 한국 시간은 UTC보다 9시간 빠르기 때문에 -540을 반환한다.
구현
const now = new Date(); // 현재 시간
const utcNow = now.getTime() + (now.getTimezoneOffset() * 60 * 1000); // 현재 시간을 utc로 변환한 밀리세컨드값
const koreaTimeDiff = 9 * 60 * 60 * 1000; // 한국 시간은 UTC보다 9시간 빠름(9시간의 밀리세컨드 표현)
const koreaNow = new Date(utcNow + koreaTimeDiff); // utc로 변환된 값을 한국 시간으로 변환시키기 위해 9시간(밀리세컨드)를 더함
위 코드에서 koreaNow
는 사용자의 시간대가 어떻게 설정되어 있더라도 한국 시간을 보여주게 된다.
이를 응용하면 다른 나라의 시간을 보여줄 수 있다.
한계점은 사용자가 시간대, 즉 지역을 바꾸는 게 아니라 시스템 시간 자체를 바꾸면 대응할 수 없다.
'Programming > Javascript' 카테고리의 다른 글
eslint 특정 라인 혹은 특정 파일에만 ignore하기 (0) | 2021.09.27 |
---|---|
자바스크립트 디바운스와 쓰로틀링 (0) | 2021.09.23 |
자바스크립트 클립보드 복사 기능 만들기 (0) | 2021.09.07 |
자바스크립트 Date 객체 깊은 복사하기 (0) | 2021.07.07 |
iOS, Safari(사파리) 자바스크립트 new Date() 크로스브라우징 이슈 (2) | 2021.06.27 |
댓글