티스토리 뷰
728x90
반응형
Timezone.setDefault(Timzone timezone) 은 메소드 명에서 유추할 수 있듯이 기본 Timezone 값을 설정하는 메소드이다.
Timezone.getDefault() // 기본 Timezone 값 가져오기
먼저 핵심부터 이야기하면, JDK 6 이전에는 defaultTimzone 이 스레드 로컬 변수에 저장되었다.
하지만 JDK 6 이후로는 defaultTimezone 이 VM 전체를 변경한다고 한다.
Timezone 설정을 아래와 같이, 별도의 시간 관련 메소드 내에서 Timezone.setDefault(Timzone timezone) 을 사용하여 Timezone 설정을 간략화 해두었었다.
( Calendar 객체를 가져오거나 SimpleDateFormat 에 timezone 을 설정하지 않고 )
public boolean checkDate() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
Calendar calendar = Calendar.getInstance();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
}
하지만 문제가 발생한 것이, 다른 시간대를 가져와서 비교를 하는 로직이 있었는데
( 위의 메소드가 사용되는 곳과 전혀 다른 곳 - 다른 Activity, 다른 프로세스 )
Calendar.getInstance("Asia/Seoul");
위 처럼 Asia/Seoul 의 Timezone 을 명시하여도 GMT 시간으로 가져오는 문제가 발생하였다.
이것 때문에 한참 골머리 썪었었는데, 다행히도 참고한 글을 발견하고 해결하였다.
References
https://codeday.me/ko/qa/20190508/489138.html
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java] String.contains() with empty String, return true (1) | 2019.10.03 |
---|---|
[Java] Type Safety : unchecked cast (0) | 2019.01.29 |
[Java] :: ( 더블콜론 ) (0) | 2018.12.12 |
[Java] Iterator (0) | 2018.12.12 |
[Java] parseInt() 와 intValue() 의 차이 (0) | 2017.11.01 |
공지사항
최근에 올라온 글