Как преобразовать дату json со смещением часового пояса в UTC при сопоставлении с объектом запроса контроллера - PullRequest
0 голосов
/ 30 января 2019

Я работаю над приложением Spring Boot, и у меня есть дата в JSON-запросе со смещением часового пояса (1968-07-21T23: 00: 00.000 + 02: 00) и его сопоставление с объектом LocalDateTime, который является частьюобъект-обертка без каких-либо проблем.Но я хочу, чтобы дата динамически корректировалась по UTC, пока она сопоставляется с этим объектом запроса в контроллере.Поэтому после того, как я получу объект оболочки запроса в контроллере, значение этой даты должно быть «1968-07-22T01: 00: 00.000 + 00: 00», с датой и часами, настроенными автоматически.

Я пробовал несколькочто-то для этого, но ничего не получалось, немногие из того, что я пробовал до сих пор, описаны ниже:

Подход 1: Поскольку я использую Jackson 2, я аннотировал поле даты DTO как ниже

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone="UTC")

Подход 2: Я пытался настроить Jackson2ObjectMapperBuilderCustomizer, как показано ниже.

@Bean
public Jackson2ObjectMapperBuilderCustomizer init() {
return new Jackson2ObjectMapperBuilderCustomizer() {
  @Override
  public void customize(Jackson2ObjectMapperBuilder builder) {
    builder.timeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
  }
 };
}

Но оба выше не работали для меня.Пожалуйста, дайте мне знать, если есть другой способ добиться этого.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Используйте класс java.text для выполнения этой работы.

, например,

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
String date = format.format(new Date());

, а затем отправьте его в свой вариант использования.

0 голосов
/ 30 января 2019

LocalDateTime - это поле DateTime без часового пояса.

Из документации:

Дата-время без часового пояса в календарной системе ISO-8601, например, 2007-12-03T10: 15: 30.

Используйте взамен ZonedDateTime.

дата-время с часовым поясом в календарной системе ISO-8601, например, 2007-12-03T10: 15: 30 + 01: 00 Европа / Париж.

Javadoc

...