使用SPRING BOOT时如何在RequestParams中保留ISO 8601日期格式

时间:2018-09-16 00:26:49

标签: java spring datetime spring-boot java-8

我有以下方法,可以接受两个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   结束时间:2018-05-03T18:00

2 个答案:

答案 0 :(得分:4)

在您的情况下,如果您使用包含seconds=0milliseconds=0HH:mm:00.000)的参数,则LocalDateTime仅输出为HH:mm

如果要保存TimeZone值,则应使用ZonedDateTimeLocalDateTime不支持此操作。

答案 1 :(得分:0)

尝试指定毫秒: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 结束时间:2018-05-03T18:00:00.555