본문 바로가기

Backend/JAVA

[JAVA] 날짜와 시간

#JAVA #DateTime

배경

  • 특정 시기에서 다른 날짜까지의 계산은 매우 복잡함.
    (윤년의 계산, 각 달마다 다른 일수)
  • 일광 절약 시간(Daylight Saving Time, DST)이 도입된 나라들의 시간 계산.
    • 3월~10월에는 태양이 일찍 뜸 -> 썸머타임 적용하는 나라들 존재 (미국주식장 썸머타임)
  • 세계는 타임존으로 나누어져 있으며 UTC(협정 세계시)로부터의 시간 차이로 정의
    -> 타임존 간의 날짜와 시간 변환

여러 시간의 기준 존재

  • GMT(그리니치 평균시)
    처음 세계 시간을 만들 때 영국 런던에 있는 그리니치 천문대를 기준
  • UTC(협정 세계시) - 주로 선호됨
    원자 시계를 사용해 국제적으로 합의된 시간 체계, 지구의 자전 속도도 반영된 시간 조정

날짜와 시간 라이브러리

  • LocalDate : 날짜만 표현 / 년, 월, 일 ex) 2024-05-12
  • LocalTime : 시간만 표현 / 시, 분, 초 ex) 12:20:30.244
  • LocalDateTime : 위 두개를 합친 표현
  • 국내 서비스만 고려할 때 사용
  • ZonedDateTime : 시간대를 고려한 날짜와 시간
    • 타임존, UTC 기반
    • 일광 절약 시간제 적용

실제 사용 날짜와 시간 정보를 표현하는 데 유리

  • OffsetDateTime
    • 타임존 X, UTC 기반
    • 일광 절약 시간제 X

고정된 오프셋을 고려할 때 유리 ex) Log

  • Instant
    • UTC 기반
    • 1970년 1월 1일 0시 0분 0초 기준의 초 데이터만 존재
  • 장점
    • 전 세계 어디서나 동일한 시점
    • 고정된 기준점

시간의 개념

  1. 특정 시간의 시간(시각)
    • 두 날짜 사이의 간격을 년, 월, 일로 나타낸다.
  2. 시간의 간격(기간)
    • 두 시간 사이의 간격을 시, 분, 초 단위로 나타낸다


출처
인프런 '김영한의 실전 자바 - 중급 1편'

'Backend > JAVA' 카테고리의 다른 글

[JAVA] 제네릭  (1) 2025.01.25
[JAVA] 예외 처리  (0) 2025.01.24
[JAVA] 클래스 (중첩, 내부)  (1) 2025.01.22
[JAVA] 열거형 (Enum Type)  (1) 2025.01.22
[JAVA] 불변 객체  (0) 2025.01.19