spring boot 2
mariadb 10.x
json으로 반환하는 서비스를 만들었는데 날짜형을 timestamp를 사용하기로 했다.
그래서 날짜를 반환하여 앞에 10자리만 잘라서 쓰려고 했는데, 날짜가 하루 모자랐다.
데이터는 timestamp형의 8/1 인데 클라이언트단으로 데이터를 가져와 출력하면 7/31 15시로 출력이 된다.
일단 UTC 데이터를 가지고 왔으니 로컬 시간으로 표기해야 할 것 같아 좀 찾아봤다.
실서버에서 테스트해보지는 못해서 맞는지 확신은 안들지만;
일단 아래와 같이 설정하니 정상 동작하는 것 처럼 보인다.
Pom.xml
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
Application.properties
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS: true
spring.jackson.serialization.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS: false
javascript timestamp to localdate
return (this < 0 ? '-' : '') +
Array(n-String(Math.abs(this)).length+1).join(str||'0') + (Math.abs(this));
}
function TimestampToLocalDate(numberTimestamp) {
var date = new Date(numberTimestamp);
if(typeof(date) == "object")
return date.getFullYear() + "-" + (date.getMonth() + 1).padLeft(2) + '-' + date.getDate().padLeft(2);
else
return "";
}
원래 아래 있는 코드였는데, IE에서 pasStart를 지원하지 않아서 수정함
javascript timestamp to localdate
function TimestampToLocalDate(numberTimestamp) {
var date = new Date(numberTimestamp);
if(typeof(date) == "object")
return date.getFullYear() + "-" + (date.getMonth() + 1).toString().padStart(2, "0") + '-' + date.getDate().toString().padStart(2, "0");
else
return "";
}