본문 바로가기
Frameworks/Spring Framework

Java Instant와 LocalDateTime 그리고 ZonedDateTime의 차이에 대해서

by Dev. Pluto 2022. 12. 27.
반응형

 

안녕하세요 오랜만에 인사드립니다! 

 

오늘은 자바에서 시간을 표현하는 여러 객체들 중에 제목과 같이 세 가지가 어떻게 다르고 어떻게 쓰이는지에 대해서 알아보고자 글을 남기게 되었습니다

 

여담이지만, 회사에서 글로벌 서비스를 출시함에 있어서 한국 Region 뿐만 아니라 해외 여러 지역에 대해서도 일괄적인 서비스 운영이 필요한 상태였습니다.

 

일 / 주간/ 월간 별 서비스에 접근하거나(로그인하거나) 새롭게 가입한 사용자들을 카운팅하고 관점에 맞게 각종 통계자료를 내는 프로젝트를 진행하면서 시계열 정보에 대해 정확하게 인지하고 있어야 할 필요가 생겼습니다. 

 

특정 일에 서비스에 로그인한 사용자들을  DB로부터 읽어올 때 

 

매개변수로 Instant 포맷으로 프론트 클라이언트에서 받아오게 되고, 해당 Instant를 DB 에서의 DATETIME자료형 (mysql 기준)으로 변환이 될 때 spring 에서의 NamedJDBCTemplate은 localdateTime 자료형으로 변환하게 됩니다. 

해당 자료형은 DB서버가 어느 위치에 존재하냐에 따라서 시차가 존재할 수 있기 때문에 항상 특정 지역으로 초기화 해 주어야 합니다. 

 

따라서 UTC 타임존을 기준으로 localDateTime을 변환시키고 데이터베이스에서의 시간 관련 데이터들과 비교하여 원하는 데이터를 뽑아내거나 자료를 처리합니다. 

 

초안 느낌으로 쓰는 글이라 주저리주저리 느낌이 나네요!

 

나중에 상세한 그림과 함께 정리해서 작성하는 시간을 가지도록 하겠습니다!

반응형