로고
로그인

개발시 헷갈리는 시간표현정리

by ksc036·2025. 05. 25. 오전 4:39

✅ 1. 기본 시간 개념

용어설명
UTC (Coordinated Universal Time)협정 세계시. 전 세계에서 기준으로 삼는 표준 시간입니다.
KST (Korea Standard Time)한국 표준시 = UTC+9입니다. 한국은 항상 UTC보다 9시간 빠릅니다.
TimeZone (시간대)각 지역이 UTC로부터 얼마나 차이 나는지를 나타냅니다. 예: Asia/Seoul, America/New_York
DST (Daylight Saving Time)일광 절약 시간제. 일부 국가(미국, 유럽 등)는 여름에 시간을 1시간 빠르게 조정합니다. 한국은 적용하지 않음.



✅ 2. 개발에서 자주 쓰이는 시간 표현

개념예시설명
Unix Time (Epoch Time)17166017311970-01-01 00:00:00 UTC 이후의 초(또는 밀리초) 단위 시간
ISO 8601 형식2025-05-24T19:28:51.218Z국제 표준 시간 포맷. Z는 Zulu Time(UTC)을 뜻함
RFC 2822 형식Sat, 24 May 2025 19:28:51 +0000이메일/HTTP 등에서 사용되는 표준 시간 문자열 형식
타임존 포함 시간2025-05-24T19:28:51+09:00KST 포함된 ISO 형식. 클라이언트/서버 간 시간 동기화에 중요


✅ 3. 시간이 헷갈리는이유

원인설명
서버와 클라이언트의 시간대가 다름서버는 UTC, 클라이언트는 KST 등
DB 저장 시 UTC, 보여줄 땐 KST자바스크립트 등에서 변환 필요
시간 포맷이 제각각ISO, Unix, RFC 등 다양한 포맷
일광 절약 시간(DST)일부 국가에서는 날짜에 따라 시간대가 바뀜



✅ 4. 실무에서 자주 하는 실수

  • 클라이언트에서 UTC를 한국 시간으로 변환 안 함

  • 서버에서 DateTime.now()를 써놓고 타임존 지정 안 함

  • DB에 timestamp 저장할 때 타임존 정보 빠짐

  • API 문서에 시간 형식 예시 누락

✅ 5. 개발 팁 & 권장 사항

상황권장 방식
서버 저장용항상 UTC로 저장 (특히 DB에서는 timestamp with time zone 추천)
API 통신ISO 8601 형식으로 UTC 시간 전송 (Z 붙여서)
프론트에서 표시사용자의 타임존(KST 등)으로 변환해서 보여주기
시간 계산가능한 한 UTC 기준으로 비교/계산
로그 기록항상 UTC 또는 시간대 포함된 포맷 사용

✅ 6. 언어/환경별 DateTime.now() 동작 비교

언어/환경DateTime.now() 의미TimeZone 포함 여부
Java (java.time.LocalDateTime.now())시스템 로컬 시간 (예: KST)❌ 타임존 정보 없음
Java (ZonedDateTime.now())시스템 시간 + 타임존 포함✅ 포함
Python (datetime.now())시스템 로컬 시간❌ 기본은 타임존 없음
Python (datetime.now(timezone.utc))UTC 시간✅ 포함됨
JavaScript (new Date())브라우저 로컬 시간 (예: 한국이면 KST)✅ 내부적으로 포함하지만 출력은 로컬 기준
Node.js (new Date())서버 로컬 시간✅ 포함, 하지만 명시적으로 보이진 않음

✅ 7. 실무에서 안전한 시간 처리 방법

목적권장 방식
DB에 저장UTC로 저장 (datetime.utcnow() 또는 ZonedDateTime.now(ZoneOffset.UTC))
사용자에게 보여주기TimeZone 기준으로 변환해서 보여주기 (예: Asia/Seoul)
API 응답 시간ISO 8601 + Z 또는 +09:00 등 타임존 포함 포맷 사용
UTC
KST
TIME
개발
User profile

ksc036

안녕하세요 개발을 좋아하는 풀스택 개발자입니다.

0개의 댓글

이런 게시글은 어때요?
더 이상 게시글이 없어요! 🎉