개발자도구
유닉스 타임스탬프와 타임존, 서버 시간이 꼬이는 이유
유닉스 타임스탬프는 1970년 1월 1일 00:00:00(UTC)을 기준으로 지금까지 흐른 초(또는 밀리초)를 하나의 숫자로 나타낸 값입니다. 이 값 자체는 타임존이라는 개념이 아예 없는, 전 세계 어디서나 동일한 절대적인 시점입니다.
문제는 이 숫자를 사람이 읽을 수 있는 날짜와 시간으로 "변환"하는 과정에서 발생합니다. 같은 타임스탬프라도 UTC 기준으로 보느냐, 한국 표준시(UTC+9) 기준으로 보느냐에 따라 화면에 표시되는 날짜와 시각이 달라지기 때문입니다. 타임스탬프 자체는 하나인데, 이를 해석하는 시간대가 여러 개이다 보니 혼란이 생기는 것입니다.
실무에서 흔한 버그 패턴은, 서버는 UTC로 시간을 저장하고 처리하는데 프론트엔드나 로그 확인 시에는 로컬 타임존으로 표시된다는 점을 인지하지 못해 "분명 오전에 처리했는데 로그에는 오후로 찍혀있다"는 식의 혼란이 발생하는 경우입니다. 이런 문제를 막으려면, 저장과 연산은 항상 UTC 기준으로 통일하고, 사용자에게 보여줄 때만 원하는 타임존으로 변환하는 원칙을 지키는 것이 안전합니다.
또한 밀리초 단위 타임스탬프와 초 단위 타임스탬프를 혼동하는 것도 흔한 실수입니다. 두 값은 정확히 1000배 차이가 나기 때문에, 어느 쪽인지 착각하면 날짜가 1970년 근처로 표시되거나 반대로 매우 먼 미래로 튀는 식의 눈에 띄는 오류가 발생합니다.
이 사이트의 타임스탬프 변환기를 이용하면 타임스탬프와 날짜·시간을 다양한 타임존 기준으로 상호 변환해볼 수 있어, 시간 관련 버그를 디버깅할 때 기준값을 빠르게 확인하는 데 도움이 됩니다.
바로 직접 체험해보세요
🚀 타임스탬프 변환기 사용해보기