Java TimeZone.getDefault()

java에서 default TimeZone을 어떤 기준으로 설정할까?

OS 의 TimeZone 설정을 기본으로 할것이라 예상된다.
어떠한 접근들로 기본 TZ을 설정하는지 따라가 본다.

TimeZone.getDefault()를 봐보면.
내부적으로 저장된 DefaultZone이 없다면 setDefaultZone() 메소드를 호출한다.

먼저 ZoneId 를 찾는데
우선 순위는

  • JVM property “user.timezone”
  • JAVA HOME 에대한 getSystemTimeZoneID 메소드 호출
    getSystemTimeZoneID 메소드는 native 이다.
    (# Gets the platform defined TimeZone ID)
  • 어떻게든 zoneId 를 설정하여 기본TZ을 설정한다.

JNI 메소드인 getSystemTimeZoneID 는 못 찾아보았다.
최종적으론 JAVA_HOME의 네이티브 메소드에 의존하여 시스템 TZ을 설정하는가 보다..

만약 어플리케이션의 타임존을 변경하려면
위에서 보는 것처럼 최우선 체크는 user.timezone이니까
VM arguemtns로 -Duser.timezone=”TZ” 을 설정 하면 되겠다.

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store