在 Spring Boot Rest 控制器中,日期字段是如何映射的。假设我们发送 json {"receivedDate":"2024-05-15","num1":5} 它将如何映射到具有属性 private Date receiveDate; 的 Java 对象中的字段(假设java.util.Date)
我们可以考虑,一个简单的类
public class SampleClass {
Integer num1;
Date receivedDate;
//getters and setters
}
以及 Spring Boot 应用程序中的 Rest 控制器,
public ResponseEntity getDetails(@RequestBody SampleClass sampleClass) {
try {
System.out.println("Execution of getDetails started. received date is: "+sampleClass.getReceivedDate());
...............}
....
}
我在控制台中得到的结果为(我在美国标准时间上午 10:20 执行了此 api):
Execution of getDetails started. received date is: Thu May 16 05:30:00 IST 2024
所以,结果包含 05:30:00 而不是我现在的时间。如果我希望它只是 00:00:00.0 而不是 05:30:00.0,该怎么办? 我很困惑,因为在一些 stackoverflow 答案中,我了解到 Jackson 的默认行为是按照 UTC 进行。但它是按照 IST 进行的,尽管我没有完成配置。
您只想接收年、月、日,时、分、秒的默认值为 00:00:00。您可以使用@JsonFormat注释:
public class SampleClass {
Integer num1;
@JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
Date receivedDate;
}
这会将输出中的默认时间设置为 00:00:00
Execution of getDetails started. received date is: Wed May 15 00:00:00 CST 2024