[Java] DateTimeFormat 과 JsonFormat 정리
GET/POST API request 시 Date 변수 송수신 방법
API로 데이터를 송수신할 때, request/response DTO에서 Date
타입 변수를 사용할 경우가 종종 있다.
직렬화를 하지 않고 String으로 받은 후에 SimpleDateFormat
으로 서비스 레이어에서 변환하는 경우가 많다.
Spring에서는 @DateTimeFormat 과 @JsonFormat으로 String 객체를 자동으로 Date 형으로 parsing 할 수 있다.
주의해야 할 점은, 우리나라 시간은 UTC보다 09:00 빠르므로 해당 timezone을 지정해줘야 Date 타입으로 제대로 parsing이 된다!
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+9")
Date regDts;
날짜와 시간 format
// 로컬 시간을 의미하는 ISO 8601 문자열
2017-11-06T15:00:00.000
// UTC(GMT) 시간을 의미하는 ISO 8601 문자열
2017-11-06T06:00:00.000Z
// 로컬 시간을 의미하면서 UTC(GMT) 대비 +09:00 임을 의미하는 ISO 8601 문자열
2017-11-06T15:00:00.000+09:00
2017-11-06T15:00:00.000
은 ISO 8601의 기본 형식이다. 해당 시간이 로컬 시간 임을 의미한다.2017-11-06T06:00:00.000Z
와 같이 뒤에 Z 식별자를 추가하면 해당 시간이 UTC(GMT) 시간 임을 의미한다.2017-11-06T15:00:00.000+09:00
와 같이 뒤에 Z 대신 +HH:mm 식별자를 추가하면 해당 시간이 로컬 시간이면서 UTC(GMT)와 09:00 만큼 차이가 남을 의미한다.
우리나라의 경우 UTC보다 9시간 빠른 시간이므로 Date 타입을 확인할 경우 +09:00가 붙는 것을 확인할 수 있다.
2016-08-17T14:10:20.000+0900
참고문헌
https://jojoldu.tistory.com/361
댓글남기기