[英]How do I indicate to Spring Boot to use UTC time zone for date parameters?
我有以下API
public ResponseEntity<ResponseDataToSeller> getTrackingDataByDate(@RequestBody RequestBodyBySeller requestBodyBySeller) {
System.out.println(requestBodyBySeller.getEndDate());
System.out.println(requestBodyBySeller.getEndDate().getDate());
System.out.println(requestBodyBySeller.getEndDate().getHours());
public class RequestBodyBySeller {
@ApiModelProperty(dataType="Date", notes = "endDate",required = true)
Date endDate;
當我使用"endDate": "2018-10-11"
發出請求時,它會打印
2018-10-11 16:54:45.897 INFO 11996 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 3 ms
Wed Oct 10 20:00:00 EDT 2018
10
20
因為我正在測試hit_date <= #{endDate}
所以這弄亂了SQL查詢。 它應該從2018-10-11返回結果,但不是,因為Spring Boot將日期解釋為2018-10-10。 將日期參數解析為API時,如何讓Spring Boot使用UTC時區?
Spring Boot 1.5.13,MyBatis 3.4.5,MyBatis Spring 1.3.1
使用本地日期 ,問題在於當涉及到日期時,java嘗試將日期轉換為服務器時區,因為未指定時區,因此需要花費UTC時間,然后才進行轉換,LocalDate不包含時區信息,因此,日期將按原樣進行解析。
抱歉,忘記了,要處理本地日期時間,您需要使用jackson-datatype-jsr310 。 然后,如示例所示,您可以使用以下注釋類:
@JsonFormat(pattern = "dd/MM/yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate birthdate;*
使用springboot時,有一些方法可以在springmvc中定義傑克遜功能。
使用屬性。 spring.jackson.xxxx
如您要設置時區。 在application.properties
使用添加spring.jackson.time-zone=xxx
定義一個實現Jackson2ObjectMapperBuilderCustomizer
的Spring bean
您可以在spring中根據需要直接創建ObjectMapper
bean。
我將類更改為java.time.LocalDate
並添加了此依賴項
<!-- For LocalDate to be deserialized using ISO format -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.