timestamp 2025-03-15
프로그래밍에서의 Unix 타임스탬프와 날짜 처리
Unix 타임스탬프, 시간대 처리, 날짜 파싱, 소프트웨어에서 흔한 날짜 관련 버그에 대한 모든 것입니다.
시간 처리는 프로그래밍에서 가장 복잡한 영역 중 하나입니다. Unix 타임스탬프는 시간을 표현하는 보편적인 방법을 제공하지만, 주의해야 할 함정이 많습니다.
Unix 타임스탬프란?
Unix 타임스탬프는 1970년 1월 1일 00:00:00 UTC(Unix 에포크) 이후 경과한 초 수입니다.
초 vs 밀리초
다른 시스템은 다른 정밀도를 사용합니다. 10자리면 초, 13자리면 밀리초입니다.
2038년 문제
32비트 시스템은 Unix 타임스탬프를 부호 있는 32비트 정수로 저장합니다. 2038년 1월 19일 이후 오버플로가 발생합니다.
해결책: 64비트 타임스탬프 사용 (대부분의 현대 시스템은 이미 사용).
시간대 처리
일반적인 실수
1. 서버 시간대 가정: 항상 UTC로 시간 저장
2. 일광 절약 시간제(DST) 버그: 한 시간이 반복되거나 건너뛸 수 있음
3. 시간대 이름 모호성: IANA 식별자 사용 (Asia/Seoul)
모범 사례
- 모든 타임스탬프를 UTC로 저장
- 표시용으로만 현지 시간으로 변환
- 문자열 표현에 ISO 8601 형식 사용
- IANA 시간대 식별자 사용
일반적인 날짜 버그
1. 월 오프바이원: JavaScript 월은 0부터 시작 (0=1월)
2. 윤년 문제: 2월 29일은 매년 존재하지 않음
3. 시간대 오프셋 부호: +09:00은 UTC보다 9시간 앞서 있음
4. 날짜 비교: 항상 타임스탬프로 비교
타임스탬프 변환 도구로 Unix 타임스탬프를 즉시 변환하세요.