Node.js 에서 DB에 현재 시간으로 업데이트하는 작업을 하는 도중에, 시간이 한국시간이 아닌 9시간 늦게 삽입되는 것을 확인하였다.
위 사진은 DB에 삽입된 시간이고, 실제 작업 시간은 2023-03-23 00:15:44 였다.
한국 시간대로 처리되도록 하기위해 다음 세 가지 과정을 거쳤다.
급하면 3번만 확인해서 적용하면 됨!
1. OS 시간 대 확인
터미널에 date를 입력하면 OS에서 안내하는 현재 시간을 알 수 있다. 한국시간과 같았으므로 한국 시간을 사용하는 것을 확인했다.
2. MySQL 시간 대 확인
SELECT NOW();
SELECT @@global.time_zone, @@session.time_zone;
NOW를 사용해서 현재 시간과 비교해도 되고,
아래 사진처럼 DB가 어느 시간대를 따르는지 확인하는 방법도 있다.
3. Date 객체 사용 시 9시간 더하여 한국시간으로 맞춰 사용
프로젝트를 작업하는 OS는 한국시간, MySQL도 운영체제를 따라서 한국시간을 사용하고 있다.
const now = new Date();
Node.js에서 현재 시간을 이용할 때 위과 같이 Date 객체를 이용하는데 이는 한국시간이 아니라서 한국시간으로 변환해주어야 한다.
// 방법 1
const now = new Date();
now.setHours(now.getHours() + 9);
// 방법 1
const now = new Date().toLocaleString("ko-KR", {timeZone: "Asia/Seoul"});
사실 Date 객체로 시간을 생성해서 삽입하는거라 1,2번 절차 무시하고 3번 방법으로 바로 고칠 수 있지만, 혹시 OS나 MySQL시간대도 다를까봐 이번 기회에 확인하는 과정을 가졌다!
'IT > Javascript' 카테고리의 다른 글
Javascript 'let' declarations can only be declared inside a block. 오류 해결 (0) | 2023.03.20 |
---|---|
Javascript Immutability (0) | 2022.10.27 |
process.argv (0) | 2022.10.05 |