개발시 헷갈리는 시간표현정리
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) | 1716601731 | 1970-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:00 | KST 포함된 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
개발
이런 게시글은 어때요?
✅더 이상 게시글이 없어요! 🎉
0개의 댓글