클라이언트와 서버의 시간 차 해소
요즘 개발하는 서비스들은 대부분 해외에서도 사용 가능합니다. 해외에서 서비스를 사용하는 경우 뿐만 아니라 각자 사용하는 기기의 국가, 시간 설정을 대한민국이 아닌 다른 곳으로 해놓았을 경우 클라이언트에서 사용하는 코드는 다른 시간을 return 합니다.
현재 제가 사용하는 기기는 대한민국 표준시를 사용하도록 설정되어 있습니다.
이 상태에서 아래 코드와 결과는 다음과 같습니다.
new Date();
//Fri Feb 18 2022 08:13:49 GMT+0900 (한국 표준시)
이번에는 기기의 시간을 미국으로 변경해 보겠습니다.
그러면 동일한 코드는 아래와 같은 결과를 보여줍니다.
new Date();
Thu Feb 17 2022 17:15:19 GMT-0600 (북미 중부 표준시)
서비스의 성격에 따라 판단할 문제이지만 만약 서버에서 시간을 체크해야 하는데 화면의 Request에서 시간을 받아서 사용할 경우 서버는 대한민국 표준시를 사용하지만 화면은 북미 중부 표준시를 사용하게 되므로 대한민국 표준시를 사용하지 않는 사용자는 적절하지 않은 오류를 만나게 됩니다.
경우에 따라 또 다르지만 화면에서도 대한민국 표준시로 통일하는 방법이 있습니다.
아래 코드를 참고합니다.
const now = new Date();
const utcDate = now.getTime() + (now.getTimezoneOffset() * 60 * 1000);
const korDate = new Date(utcDate + 9 * 60 * 60 * 1000);
우리나라는 그리니치 표준시 + 9H를 사용하므로 UTC 기준시각에 9시간을 더해주는 로직입니다.
위와 같이 코드를 작성하면 북미 중부 표준시를 사용하더라도 대한민국 표준시를 화면에서도 사용할 수 있습니다. 물론 new Date() 보다는 서버의 시간을 Response Header로 받아온 후에 변환하는게 일반적입니다.
결과는 아래와 같습니다.
Fri Feb 18 2022 08:22:47 GMT-0600 (북미 중부 표준시)
Author And Source
이 문제에 관하여(클라이언트와 서버의 시간 차 해소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redballs/클라이언트와-서버의-시간-차-해소저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)