ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • restdocs custom
  • FilterSecurityInterceptor
  • StructuredConcorrency
  • DataJpaTest
  • mysql
  • 구조화된 동시성
  • 가상 스레드
  • LocalDateTime
  • AuthenticationException
  • java
  • 정규표현식
  • AccessDecisionVoter 커스텀
  • 인가(Authorization) 처리
  • querydsl
  • restdocs enum
  • VirtualThread Springboot
  • UserDetailsService
  • jpa
  • 동일성
  • nginx basic auth
  • 동시성 제어
  • 동등성
  • AccessDecisionManager
  • tree
  • nGrinder
  • node exporter basic auth
  • junit5
  • scope value
  • 트랜잭션
  • 가상 스레드 예외 핸들링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Java/time

Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime

2022. 12. 8. 23:09

'

  • 연산은 LocalDate, LocalTime 을 보면서 하면 된다.

LocalDateTime

  • LocalDate와 LocalTime을 합쳐서 LocalDateTime을 만들 수 있다. (둘의 기능을 합쳐놓았다고 보면 된다)
LocalDate date = LocalDate.of(2018, 10, 05);
LocalTime time = LocalTime.of(12,34,56);

LocalDateTime dt = LocalDateTime.of(date, time);
LocalDateTime dt2 = date.atTime(time);
LocalDateTime dt3 = time.atDate(date);
LocalDateTime dt4 = date.atTime(12, 34 ,56);
LocalDateTime dt5 = time.atDate(LocalDate.of(2018, 10, 05));
LocalDateTime dt6 = date.atStartOfDay(); // = date.atTime(0,0,0);

LocalDateTime dateTime = LocalDateTime.of(2018, 10, 05, 12, 34, 56);
LocalDateTime today = LocalDateTime.now();

 

ZonedDateTime

LocalDateTime에 타임존(tiem-zone)을 추가하면 ZonedDateTime이 된다.
ZoneId는 일광 절약시간(DST, Daylight Saving Time)을 자동으로 처리해준다.
LocalDateTime에 atZone()으로 시간대 정보를 추가하면, ZonedDateTime을 얻을 수 있다.

ZoneId zid = ZoneId.of("Asia/Seoul");
ZonedDateTime zdt = dateTime.atZone(zid);

특정 타임존의 시간 알기

ZoneId nyId = ZoneId.of("America/New_York");
ZonedDateTime nyTime = ZonedDateTime.now().withZoneSameInstant(nyId);
// now() 대신 of() 사용하여 날짜&시간 지정 가능

UTC로부터 얼마나 떨어져있는지를 ZoneOffSet으로 표현

  • ZonedDateTime의 변환
    • LocalDateTime처럼 날짜와 시간에 관련된 다른 클래스로 변환하는 메서드들을 가지고 있음
LocalDate toLocalDate()

LocalTime toLocalTime()

LocalDateTime toLocalDateTime()

offsetDateTime toOffsetDateTime()

long toEpochSecond()

Instant toInstant()

사용 가능한 ZoneId의 목록은 ZoneId.getAvailableZonelds()로 얻을 수 있음

Set<String> 반환

Asia/Aden
America/Cuiaba
Etc/GMT+9
Etc/GMT+8
Africa/Nairobi
America/Marigot
Asia/Aqtau
Pacific/Kwajalein
America/El_Salvador
Asia/Pontianak
Africa/Cairo
...
  • 진짜 많다.. 100개넘는듯?

 

OffsetDateTime

ZonedDateTime은 ZoneId로 구역을 표현하는데,
ZoneOffset을 사용하는 것이 OffsetDateTime 이다.
ZoneId는 일광절약시간 처럼 타임존과 관련된 규칙들을 포함하지만,
ZoneOffset은 단지 시간대를 시간의 차이로만 구분

  • → 컴퓨터에게 일광절약시간처럼 계절별로 시간을 더했다 뺐다 하는 행위는 위험함
  • → 아무런 변화 없이 일관된 시간체계를 유지하는 것이 더 안전함
    • 같은 지역내의 컴퓨터간 데이터를 주고받을 때, 전송시간 : LocalDateTime이면 충분
    • 다른 지역의(다른 시간대에) 존재하는 컴퓨터간의 통신 : OffSetDateTime이 필요

 

참조

  • 자바의 정석
  • https://gptjs409.github.io/java/
  • https://ryan-han.com/post/java/java-calendar-date/
저작자표시 비영리

'Java > time' 카테고리의 다른 글

Java time - LocalDateTime 파싱과 포맷  (0) 2022.12.08
Java time 패키지 - TemporalAdjusters 클래스  (0) 2022.12.08
Java time 패키지 - Period, Duration 클래스  (0) 2022.12.08
Java time 패키지 - Calendar와 Date  (0) 2022.12.08
Java time 패키지 - LocalDate, LocalTime, Instant  (0) 2022.12.08
    'Java/time' 카테고리의 다른 글
    • Java time 패키지 - TemporalAdjusters 클래스
    • Java time 패키지 - Period, Duration 클래스
    • Java time 패키지 - Calendar와 Date
    • Java time 패키지 - LocalDate, LocalTime, Instant
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바