안드로이드에서 Gson을 이용해서 서버에서 받은 Json 문자열을 파싱 할 때

필드 중에 Date 타입이 있다.


Gson에서 사용하는 날짜 포맷을 "yyyy-MM-dd HH:mm:ss:SSS z Z" 로 해두고, 서버쪽도 같은 포맷으로 날짜를 문자열로 변환하도록 해두었다.


서버의 타임존을 UTC로 사용하다가 편의상 KST(한국 표준시)로 변경해서 사용하니

받은 날짜의 문자열의 포맷은 아래처럼 된다.


"2014-03-15 21:07:32:221 KST +0900"


정확하게 멀쩡해 보이는 이 문자열을 Date 타입으로 변환하려면 오류가 발생한다.

Date 포맷이 아니라고 한다.

문제는 타임존을 의미하는 KST 부분,

까닭은 안드로이드에서 KST 타임존을 지원하지 않는다.


시간 설정을 한국, 서울 시간으로 해두어도 GMT로 적용되어 간다.


TimeZone.getAvailableIDs()나, TimeZone.getAvailableIDs(int rawOffset)을 이용해서 확인해보고 사용할 것을 그랬다. 라는 생각은 지금에서야 드는 생각이고, 저 예외가 생길 때는 도대체 정말 멀쩡한 문자열이 파싱이 안되서 미치는 줄 알았다. KST가 안되는 줄 꿈에도 몰랐다.

안드로이드에서 테스트하기 귀찮아 그냥 자바 프로젝트에서 같은 문자열을 Date 객체로 변환했을 땐 아~주 문제 없이 잘 파싱이 되었으니깐 말이다.


Moneycomb 진행하면서 시간의 표현에 대해서 많이 배우고 있다.


+ Recent posts