핵심 가이드
타임스탬프 및 타임존 가이드
타임스탬프 변환, 시간대 비교, 일정과 보고를 망가뜨리는 몇 시간 단위의 오차를 피하기 위한 실용 참고서입니다.
대부분의 시간 버그는 산술 계산이 아니라 말로 드러나지 않은 가정에서 옵니다. 백엔드는 UTC로 저장하지만 프런트엔드는 로컬 시간으로 표시하거나, 보고서가 시간대 없이 날짜만 적거나, 초 단위 타임스탬프를 밀리초로 착각하는 경우입니다. 이런 일이 생기면 증상은 무작위처럼 보이지만 원인은 일관됩니다.
첫 번째 질문: 원본 시간대는 무엇인가
숫자 변환부터 시작하지 마세요. 먼저 원본 시간대, 표시 시간대, 그 사이의 형식 경계를 명확히 해야 합니다. 셋 중 하나라도 암묵적이면 변환은 이미 위험합니다. 신뢰할 수 있는 워크플로는 릴리스 노트, cron 작업, 회의 일정이 만들어지기 전에 이 세 가지를 문서화합니다.
팀의 시간을 크게 빼앗는 실수
가장 큰 실수는 초와 밀리초를 섞는 것입니다. 두 번째는 로컬 벽시계 시간을 UTC인 것처럼 직렬화하는 것입니다. 세 번째는 ISO 문자열이 어떤 시간대를 나타내는지 사용자에게 알려주지 않는 것입니다. 테스트 데이터가 DST 경계나 지역 간 인계를 지나지 않으면 이런 버그는 단위 테스트를 통과할 수 있습니다.
- 문서와 UI의 사람이 읽는 시간에는 항상 명시적인 시간대를 붙입니다.
- 디버깅 중에는 형식화된 문자열 옆에 원본 epoch 값도 함께 둡니다.
- 일정 로직을 배포하기 전에 최소 두 지역을 가로지르는 예시 하나를 테스트합니다.
실용적인 브라우저 확인법
먼저 타임스탬프를 UTC로 변환하고, 그다음 대상 시간대로 변환한 뒤, 원래의 비즈니스 기대값과 비교합니다. 날짜 산술이 포함된 작업이라면 시간대 변환과 한 번에 생각하지 말고 그 단계를 따로 실행하세요. 이렇게 분리하는 것만으로도 추측보다 더 많은 실수를 잡을 수 있습니다.
관련 읽을거리
가이드와 워크플로
관련 도구
도구 라이브러리