요약
https://jaimemin.tistory.com/1537
Local : 현지 시간 그 자체로 타임존, 오프셋이 없음
Instant : UTC의 타임라인에 있는 한 순간으로 UTC 첫 발생 모먼트 발생 이후 nano 초 동안의 시간
ZoneDateTime : ZoneId + Instant
ZoneId zoneId = ZoneId.of("Asia/Seoul");
비즈니스 로직
실제 런칭된 서비스에서는 ZonedDateTime 이나 Instant를 가장 많이 사용
거의 모든 백엔드, 데이터베이스, 비즈니스 로직, 데이터 지속성, 그리고 데이터 교환은 UTC 형식이어야
정확한 시간을 정확히 지정해야 하는 경우가 많기 때문
사용자 단에서는 표준 시간대로 조정해야 함으로 formatter 클래스를 활용
ZoneId zoneId = ZoneId.of("Asia/Seoul");
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );
DateTimeFormatter formatter = DateTimeFormatter
.ofLocalizedDateTime( FormatStyle.FULL )
.withLocale( Locale.Korea ) ;
String outputFormatted = zonedDateTime.format( formatter ) ;
출처: https://jaimemin.tistory.com/1537 [꾸준함:티스토리]
LocalDateTime은 언제?
특정 날짜와 시간을 여러 위치에서 적용하려는 경우
⇒ 우리 서비스의 경우이다. 우리 서비스는 선후관계가 중요한 것이 아닌, 사용자가 현재 존재하는 곳에서 어느 시간대에 사용을 하였는지, 얼마나 사용하였는지에 대한 메타데이터가 필요하기 때문에 LocalDateTime을 사용해도 무방하다
예약을 하는 경우
System.currentTimeMillis()? Instant.now() ?