从传入的JSON反序列化LocalDateTime

时间:2018-02-05 12:07:11

标签: json spring rest date localdate

我创建了Spring Boot REST Api,我需要处理包含LocalDateTime和LocalDate变量的REST Controller对象。

这是我的示例对象:

public class Foo {
   private LocalDateTime dateTime;
   private LocalDate date;

   // others variables, geeters and setters
}

和我的控制员:

@PostMapping("/foo")
public void fooApi(@RequestBody @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Foo foo) {
    // calling some service
}

我上面尝试过解决方案,然后发送json:

{  
   "dateTime":"2018-02-05T11:59:11.332Z",
   "date":"2018-02-05T11:59:11.332Z"
   ...
}

enter image description here

正如你所看到我发送时间12:59 ..但控制器按时间11:59命中。 你能告诉我春假的准确日期和时间吗?我在application.properties中也有这个:

spring.jackson.serialization.write-dates-as-timestamps=false

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

请更正你在11点59分过去的json中的描述,但是你说你要经过12:59。

根据你提到的不同,这是因为时区。

d.toISOString以UTC格式提供日期。但是,.pull-right给出时区(系统时区)特定日期,在您的情况下为CET(中欧时间),即utc + 01:00表示提前1小时。

答案 1 :(得分:0)

LocalDateTime does not hold any time-zone information. Assuming that you want time without timezone (local time) and receive the time for the client/user, you should send without timezone:

{  
  "dateTime":"2018-02-05T12:59:11.332",
   ...
}

Note from your example, time part is changed to 12:59, and Z for UTC timezone is removed.