node9.io

UTC와 한국 시간, epoch를 한 번에

서버는 UTC로 찍고 사람은 KST로 읽습니다. 그 사이를 계속 오가야 한다면 여기서 하세요.

UTC를 한국 시간으로 바꾸려면 몇 시간을 더하나요?

9시간을 더하면 됩니다. 한국 표준시(KST)는 UTC+9이고 서머타임이 없어 연중 고정입니다. UTC 0시는 한국 오전 9시입니다. 아래에서 UTC·한국 시간·epoch를 서로 바꿔볼 수 있습니다.

지금 UTC
지금 한국 (UTC+9)
지금 epoch (초)

UTC로 저장하고 KST로 보여주기

시간대 문제로 가장 자주 깨지는 지점은 저장 시점에 시간대를 섞는 것입니다. 데이터베이스에는 UTC로 저장하고, 화면에 뿌릴 때만 한국 시간으로 바꾸는 것이 안전합니다. 반대로 하면 서버를 옮기거나 라이브러리를 올릴 때 값이 조용히 어긋납니다.

MySQL에서 자주 겪는 문제

드라이버에 시간대 옵션을 주면 NOW()로 비교하는 만료 판정이 어긋나는 경우가 있습니다. 값을 문자열 그대로 받아 애플리케이션에서 다루는 편이 예측하기 쉽습니다.

한국에는 서머타임이 없습니다

UTC+9로 연중 고정입니다. 그래서 "9시간 더하기"가 항상 성립합니다. 다른 나라 시간대를 다룰 때는 이 가정이 깨지므로 반드시 시간대 라이브러리를 쓰셔야 합니다.

자주 묻는 질문

한국은 서머타임이 있나요?

없습니다. 한국 표준시는 연중 항상 UTC+9입니다. 그래서 UTC와의 차이가 9시간으로 고정됩니다.

서버 로그 시각이 실제보다 9시간 이르게 찍힙니다.

서버 시간대가 UTC로 설정된 경우입니다. 로그 자체는 정상이며, 읽을 때 9시간을 더하면 한국 시간이 됩니다. 애플리케이션에서 시간대를 바꾸기보다 저장은 UTC로 하고 표시할 때만 변환하는 편이 안전합니다.

epoch 초와 밀리초는 어떻게 구분하나요?

자릿수로 구분합니다. 10자리면 초, 13자리면 밀리초입니다. 이 도구는 자릿수를 보고 자동으로 판단합니다.

같이 보기