삼심SAMSIM

점검 가이드 · 개발

날짜·시간대 버그 — 한국 시간과 UTC, 월말·연말 주차

2026-10-24 기준

세 줄 요약
  • 서버는 보통 UTC(한국보다 9시간 느린 기준 시간)로 돌아가서, 새벽 0~9시 사이 날짜가 하루 어긋나기 쉽습니다.
  • "한 달 뒤", "말일", "올해 몇째 주"는 생각보다 계산이 까다로워 31일·2월·연말에 틀립니다.
  • 저장은 한 가지 기준으로, 화면에 보여 줄 때만 한국 시간으로 바꾸고, 위험한 날짜로 직접 시험해 보세요.

이런 일이 생깁니다

  • 손님이 밤 11시에 내일 예약을 했는데, 관리자 화면에는 모레로 보입니다.
  • "오늘 매출"을 보면 아침 9시 전 주문이 어제 매출로 들어갑니다.
  • 1월 31일에 가입한 손님의 "한 달 뒤 결제일"이 3월 3일이 되거나 2월 28일이 됩니다.
  • 12월 마지막 주와 1월 첫 주가 같은 "1주차"로 묶여 주간 통계가 이상해집니다.
  • 매일 자정에 돌려야 할 작업이 한국 시간 오전 9시에 돕니다.

왜 생기나요 — 한국 시간과 UTC

한국 표준시(KST)는 세계 기준시(UTC)보다 9시간 빠르고, 서머타임이 없습니다. 많은 서버와 데이터베이스, 예약 작업(크론)은 UTC 를 기준으로 돌아갑니다.

그래서 한국 시간 새벽 1시는 UTC 로 전날 오후 4시입니다. 코드가 "오늘 날짜"를 서버 기준으로 잘라 쓰면, 한국 시간 0시부터 9시 사이의 일이 전날로 들어갑니다. 내 컴퓨터(한국 시간)에서 시험할 때는 멀쩡하다가 배포한 서버에서만 틀리는 것도 이 때문입니다.

월말·연말이 까다로운 이유

  • 달마다 날 수가 다릅니다(28·29·30·31일). "다음 달 같은 날"이 없는 달이 있어, 1월 31일의 한 달 뒤를 어떻게 정할지 미리 규칙을 정해야 합니다(보통 그달 말일로 맞춤).
  • 윤년의 2월 29일에 가입한 손님의 1년 뒤 날짜도 정해 둬야 합니다.
  • "몇째 주"는 나라와 도구마다 기준이 다릅니다. 국제 표준(ISO 8601) 주차는 월요일 시작이고 그해 첫 목요일이 든 주를 1주차로 보아, 12월 말 며칠이 다음 해 1주차가 되기도 합니다. 연도와 주차를 함께 쓸 때 "주차의 연도"와 "달력의 연도"가 다를 수 있습니다.

막는 방법

  1. 시각은 한 가지 기준(보통 UTC 또는 시간대가 붙은 형식)으로 저장합니다.
  2. "오늘", "이번 달", "이번 주"처럼 날짜로 자를 때는 한국 시간(Asia/Seoul)으로 바꾼 다음 자릅니다.
  3. 예약 작업의 실행 시각을 적을 때 UTC 인지 한국 시간인지 확인합니다. 한국 시간 자정은 UTC 로 전날 15시입니다.
  4. "한 달 뒤", "말일", "주차"의 규칙을 문장으로 정해 두고 코드에도 그대로 적게 합니다.
  5. 아래 날짜로 직접 시험합니다: 한국 시간 새벽 0시 30분과 8시 59분, 1월 31일, 2월 28·29일, 12월 29~31일, 1월 1일.

내 AI 에게 점검 맡기기

내 AI 에게 그대로 붙여 넣기이 프로젝트에서 날짜와 시간을 다루는 곳을 모두 찾아 점검해 줘. 손님은 모두 한국(Asia/Seoul)에 있고 서버는 UTC 로 돈다고 가정해. (1) "오늘·이번 달·이번 주"를 자를 때 한국 시간 기준인지 (2) 예약 작업의 실행 시각이 의도한 한국 시간과 맞는지 (3) 한 달 뒤·말일·1년 뒤 계산이 1월 31일, 2월 29일에서 어떻게 되는지 (4) 주차 계산이 12월 말·1월 초에 어떻게 되는지를 확인해 줘. 문제마다 어떤 날짜·시각을 넣으면 어떤 값이 나오고 원래는 무엇이어야 하는지 숫자로 적어 줘. 아직 고치지 말고 목록만 보여 줘.

자주 묻는 질문

서버 시간대를 한국으로 바꾸면 해결되나요?

당장은 맞아 보일 수 있지만, 데이터베이스·예약 작업·외부 서비스가 각자 다른 기준을 쓰면 다시 어긋납니다. 저장은 한 기준으로, 날짜를 자르거나 보여 줄 때만 한국 시간으로 바꾸는 쪽이 오래 갑니다.

한국은 서머타임이 없으니 걱정 안 해도 되죠?

한국 시간 자체는 서머타임이 없지만, 해외 손님이나 해외 서비스(결제·광고 통계)의 시각을 함께 다루면 그쪽의 서머타임 때문에 1시간씩 어긋날 수 있습니다.

시험할 때 날짜를 어떻게 바꾸나요?

AI 에게 "현재 시각을 바꿔 넣어 시험할 수 있게 해 줘"라고 하면, 대부분 시각을 인자로 받거나 시험 도구로 시계를 고정하는 방법을 만들어 줍니다.

내 코드에 이런 문제가 있는지, AI 세 개가 따로 봐 드려요.

삼심은 Claude·GPT·Gemini 가 서로 모르게 점검하고 지적을 교차 확인해, 개발부터 법률까지 8개 분야의 고칠 순서와 수정 지시문을 드립니다.

함께 보면 좋은 글

참고

이 글은 일반적인 정보이며 법률·보안 자문이 아닙니다. 서비스마다 상황이 다르니 고치기 전에 확인하세요.