Spring-boot @RequestParam аннотация преобразует часовой пояс UTC в запросе в местный часовой пояс - PullRequest
1 голос
/ 14 мая 2019

У меня есть приложение весенней загрузки с контроллером, который обрабатывает некоторые запросы с датой, переданной в качестве параметра запроса. Например, URI для запроса:

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

Однако, используя аннотацию @RequestParam для анализа даты из URI, я получаю дату в местном часовом поясе, а не в часовом поясе UTC (как указано 'Z').

Я попытался установить часовой пояс jdbctemplate, java.util.timezone и spring.jackson.time_zone в application.properties, но это не помогло.

@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

Значение должно быть в часовом поясе UTC из-за завершающего 'Z' в шаблоне, переданном @ DateTimeFormat.

Есть идеи, что мне здесь не хватает?

1 Ответ

0 голосов
/ 14 мая 2019

Когда вы запускаете ваше приложение, виртуальная машина автоматически наследует часовой пояс по умолчанию вашего локального компьютера. Вы можете обновить часовой пояс по умолчанию для своего приложения следующим образом.

@SpringBootApplication
public class Application {

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

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...