인프런 커뮤니티 질문&답변

에헤라디야님의 프로필 이미지
에헤라디야

작성한 질문수

스프링 부트 - 핵심 원리와 활용

스프링부트 + JPA 환경에서 타임존 문의 드립니다

작성

·

763

1

안녕하세요, 스프링부트+JPA+mariadb를 이용하고 있습니다.
서버시간: utc
스프링부트 타임존 설정: kst, utc+9

환경에서 개발중 localdate, localdatetime 디비 칼럼을 어떻게 사용하시는지 궁금합니다.

저는 프로그램 단에서는 타임존을 적용해서 시간을 사용하고
db 에는 utc 로 저장하도록 설정하고 있습니다

기존에는 localdatetime 만 사용해서
프로그램에서 2023/03/26 15:33:33 으로 받으면
db 에는 2023/03/26 06:33:33 으로 저장하고
다시 db 에서 불러올땐, 타임존 적용해서 2023/03/26 15:33:33 으로 사용하고 있었습니다.

localdate 형식으로 새롭게 추가하였는데
프로그램에서 2023/03/26 으로 받고
db 에는 2023/03/25 로 저장되고
다시 db 에서 불러오면 2023/03/25 로 전달 받고 있습니다.

위와 같은 환경을 설정했던 이유는, 여러 시간대(해외와 국내 같이)를 동시에 서비스 할 가능성이 있어서, db 는 모든 시간을 utc 로 저장하고 각 환경에 따라서 시간을 표시하자 라고 생각했습니다

위와 같은 상황에서 어떤식으로 해결하는게 좋은 방법일지 고민 됩니다.
혹은 다르게 설정하는 것이 좋은지 궁금합니다

localdate 를 사용하지 않고 localdatetime 형식을 쓰되 표현상으로 yyyy-MM-dd 로 바꿔야할지

아니면 localdate 그대로 쓰되 원하던 결과가 나오도록 설정하는 방법이 있을지 궁금합니다.

답변 1

0

안녕하세요. 에헤라디야님, 공식 서포터즈 David입니다.

db 칼럼 타입은 어떤지, 어떻게 localdate로 불러오는지, 애플리케이션 단에서 어떤 변환을 거치는지 코드를 보아야 조금 더 자세히 답변 드릴 수 있을 것 같습니다.

통상적으로 db는 utc를 사용하고, 애플리케이션 단에서 사용자 접속 국가를 기준으로 변환해서 전달하게 됩니다.

감사합니다.

에헤라디야님의 프로필 이미지
에헤라디야

작성한 질문수

질문하기