我正在数据库中保存日期
,所以我想规范我的Spring Boot Rest控制器接收日期的方式,这样服务就可以部署到世界上任何地方(AWS EC2等)。
我试图设置以下属性,但没有帮助:
spring.jackson.time-zone=UTC
还有另一个属性,它总是
true
spring.jackson.deserialization.adjust-dates-to-context-time-zone=true
UTC
时区和我当前时区中的另一个时区
America/Sao_Paulo
有效载荷示例:
{"date":"2017-09-15T18:58:00.000Z"}
当服务部署在圣保罗时,它会收到:
2017-09-15 18:58:00.000000
对的
.
2017-09-15 15:58:00.000000
这就是
不准确的
.
LocalDateTime
示例模型:
import java.time.LocalDateTime;
class Model {
private LocalDateTime date;
public LocalDateTime getDate() {
return date;
}
public void setDate(LocalDateTime date) {
this.date = date;
}
}
示例资源:
@RestController
class Resource {
@RequestMapping(consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<?> add(@RequestBody Model model) {
System.out.println(model.getDate());
// persistence ommited
return ResponseEntity.created(URI.create("")).build();
}
}
另一个限制:必须不注释我的模型类才能这样做。
pom.xml
(相关部分)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
</parent>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>2.8.5</version>
</dependency>