簡體   English   中英

Spring-boot @RequestParam批注將請求中的UTC時區轉換為本地時區

[英]Spring-boot @RequestParam annotation converts UTC timezone in request to local timezone

我有一個帶有控制器的spring-boot應用程序,該控制器處理帶有日期作為查詢參數傳遞的某些請求。 例如請求的URI:

http://localhost:8081/test/read?from=2018-01-01T00:00:00Z

但是,使用@RequestParam批注從URI中解析日期,我在本地時區而不是UTC時區(如“ Z”所示)獲取日期。

我嘗試在application.properties中設置jdbctemplate時區,java.util.timezone和spring.jackson.time_zone,但這沒有幫助。

@RequestMapping(value = "test/read", method = RequestMethod.GET)
    public ResponseEntity<String> get(
            @RequestParam(value="from") @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'") final Date from)
    // value of date in 'from' is in local timezone

由於傳遞給@DateTimeFormat的模式中的尾部“ Z”,該值應位於UTC時區。

關於我在這里缺少什么的任何想法?

啟動應用程序時,VM會自動繼承本地計算機的默認時區。 您可以如下更新應用程序的默認時區。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

        SpringApplication.run(Application.class, args);
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM