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이다.
'java core' 카테고리의 다른 글
자바 heap 튜닝/분석할 때 주의할 점 (0) | 2018.05.30 |
---|---|
[펌] java8의 parrallel stream 좋은 설명 (0) | 2018.03.08 |
[jvm] gc 로그와 메모리 (0) | 2018.01.14 |
[java] jvm의 GC 옵션 설정하기 (0) | 2018.01.12 |
java visualvm의 self time 설명 (0) | 2018.01.10 |