繁体   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