Как сохранить формат даты ISO 8601 в RequestParams при использовании SPRING BOOT - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть следующий метод, который принимает два параметра даты в формате ISO 8601. Однако, когда я печатаю эти даты, я теряю секунды, миллисекунды и часовой пояс «Z». Как сохранить всю дату, даже если секунды и миллисекунды равны 0?

            @RequestMapping(method=RequestMethod.GET, value="/status")
                public StatusObject getStatus(@RequestParam("id") String id, 
                                                     @RequestParam("startTime")@DateTimeFormat(iso=DateTimeFormat.ISO.DATE_TIME) LocalDateTime startTime,
                                                     @RequestParam("endTime")@DateTimeFormat(iso=DateTimeFormat.ISO.DATE_TIME) LocalDateTime endTime) throws Exception{

                    StatusObject statusObject = null;

                    System.out.println("startTime: "+ startTime);
                    System.out.println("endTime: "+ endTime);

                    return statusObject;

            }

Ввод: http://localhost:8080/status?id=123&startTime=2018-05-03T15:00:00.000Z&endTime=2018-05-03T18:00:00.000Z

Выход: Время начала: 2018-05-03T15: 00 endTime: 2018-05-03T18: 00

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

В вашем случае, если вы используете параметры, содержащие seconds=0 и milliseconds=0 (HH:mm:00.000), LocalDateTime будет выводиться только как HH:mm

Если вы хотите сохранить значения TimeZone, вы должны использовать ZonedDateTime, LocalDateTime не поддерживает это.

0 голосов
/ 16 сентября 2018

Попробуйте указать миллисекунды: http://localhost:8080/status?id=123&startTime=2018-05-03T15:00:00.957Z&endTime=2018-05-03T18:00:00.555Z

Похоже, что игнорируется, когда сообщается ноль миллисекунд.

Мой вывод : Время начала: 2018-05-03T15: 00: 00.957 endTime: 2018-05-03T18: 00: 00.555

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