블로그로 돌아가기
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 타임스탬프를 즉시 변환하세요.