TIL. 항상 한국시간으로 기준 맞추기 (자바스크립트)


1.문제점

특정 시간에만 어떠한 것을 운영한다고 가정하자.
그러면 그 유저가 만약 해외에 있다면? 그 특정 시간에 전화가 연결되지 않을까?(즉 로컬시간)
이런 경우는 로컬 시간이 무의미하다.그래서 서버시간 기준으로 두려고 하는데....음?


2.해결 과정

서버 시간을 기준으로 하려면 api를 가져오거나 뭐 복잡하게 있던데...
아무리 생각해도 더 쉬운 방법이 있을거 같았습니다.
왜냐하면 시간은 세계에서 정한 절대 기준이 확실히 있고 그 기준에서 무조건 한국시에 맞추면 그만 아닌가?

그래서 국제표준시를 기준으로 시분초를 다 초로 바꾼 후에 계산하면 되지 않을까 싶었습니다.
utc 를 다 초 단위로 바꾸고 그 단위를 한국 시로 바꾸게 하면 될까?싶어서 구글링을 했습니다.


3.해결방법

해결도 결국...!


    const now = new Date();
    //현재 시간 데이터를 가져옵니다.

    const utcNow = now.getTime() + now.getTimezoneOffset() * 60 * 1000;
    //현재 utc 시간을 가져옵니다.다 초단위로 바꿉니다.
    
    const koreaTimeDiff = 9 * 60 * 60 * 1000;
    //한국 시간은 utc 시간 기준 9시간 차이가 납니다.그걸 맞게 초단위로 곱해줍니다.
    const koreaNowTime = new Date(utcNow + koreaTimeDiff);
    // 최종 한국시간
    const koreaNowHours = koreaNowTime.getHours();
    //한국 현재 시간
    const koreaNowMinutes = koreaNowTime.getMinutes();
    //한국 현재 분

이렇게 적으니 ㅎㅎㅎㅎ 아주 잘 됩니다.
시간과 분 단위만 있으면 로직 활용이 충분하니 굳이 초는 쓰지 않았습니다.

✍️ ✅

첨에는 흠 서버 시간을 어떻게 가져와야 하나 라이브러리를 써야하나 했지만 전 라이브러리를 좋아하지 않는 타입이라 더 쉽게 할 수 있을거 같다고 구글링으로 찾아봤습니다.
역시나 문제는 모를 때 가장 어렵지만 알고나면 쉽습니다.


문제 해결에 가장 큰 도움을 받은 출처 목록

https://ryusm.tistory.com/141

좋은 웹페이지 즐겨찾기