문제 ❗
ZonedDateTime 을 만들어서 만료일자를 만들던 중, 이상한 버그가 있었다.
버그라고 하기에는 애매하고, 그냥 로컬에서 테스트 시에는 아래와 같은 형식으로 잘 나왔다.
"2024-00-00T00:00:00+09:00"
하지만 도커로 이미지를 말고 컨테이너 배포 하게 되면 아래의 형식으로 뜨게 되었다.!
"2024-00-00T00:00:00Z"
원인 🔧
JVM 의 설정 때문이었다.
로컬 PC 에서는 JVM 에서 나라의 설정이 Asia/Seoul 로 되어있으니 해당 부분이 잘 나왔지만
도커를 빌드한 순간 딱히 나라 설정한 부분이 존재하지 않기 때문에 Z UTC 타임존을 나타내는 것이었다.
해결 ✅
1. ZonedDateTime을 서울 시간대로 파싱
String expiredTimeStr = "2024-11-10T03:27:36Z"; // UTC 시간대 문자열
ZonedDateTime expiredTime = ZonedDateTime.parse(expiredTimeStr)
.withZoneSameInstant(ZoneId.of("Asia/Seoul"));
System.out.println(expiredTime); // 서울 시간대로 출력
2. 배포 시 jar 설정
java -Duser.timezone=Asia/Seoul -jar your-application.jar
으로 해주면 해당 형식이 원하는 대로 잘 나온다.
지금은 한국 시간대로 나와야되서 중요한 부분이지만 나중에 각 국에 배포할 때는 어떻게 설정해야되는지 생각해봐야겠다.