java Spring-boot @RequestParam annotation将请求中的UTC时区转换为本地时区

cuxqih21  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(38)

我有一个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时区。
你知道我错过了什么吗

92vpleto

92vpleto1#

当您启动应用程序时,VM会自动继承本地计算机的默认时区。您可以按以下方式更新应用程序的默认时区。

@SpringBootApplication
public class Application {

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

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

}

字符串

相关问题