Date를 GMT스타일(is8601)의 표현 문자열(momentjs가 표현하는 날짜시간 문자열)로 변경하는 예제이다.




Calendar calendar = Calendar.getInstance();

Date date = calendar.getTime();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

sdf.setTimeZone(TimeZone.getTimeZone("Asia/Seoul"));


String text = sdf.format(date);

System.out.println(text);

// "2018-01-19T20:34:46.177+09:00"




여기서 XXX의 의미가 중요하다.

XXX는 +09:00를,

X는 +09을 의미한다.




GMT 스타일의 ISO8601문자열을 Date로 변환하려면 다음과 같이 개발한다.


val dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"))
val date: Date = dateFormat.parse("2017-12-11T13:00:00+09:00")
println(date)

Mon Dec 11 13:00:00 KST 2017





--- 참고로 Joda DateTime의 fomatter는 잘 인식이 안되서 SimpleDateFormat을 사용한다.


val fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssXXX")




다음 예제는 SimpleDateFormat과 JodaTime을 이용해 UTC로 리턴하는 예이다.


def getUTCDateTime(dateTime: String): DateTime = {
val dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"))
new DateTime(dateFormat.parse(dateTime), DateTimeZone.UTC)
}



println(getUTCDateTime("2017-12-11T07:00:00+09:00"))의 결과는 2017-12-10T22:00:00.000Z이다.

Posted by 김용환 '김용환'

댓글을 달아 주세요