将Unix时间戳转换为Java Date,Spring RequestParam

时间:2015-03-22 15:53:57

标签: spring-mvc datetime unix-timestamp

以下是请求fullcalendar js发送到服务器。

http://localhost:8080/NVB/rest/calendar/events?start=1425168000&end=1428796800 400

如何在Spring Request Param中指定日期模式(@DateTimeFormat)以将此时间转换为Date对象。我尝试了不同的模式,但得到了405 Bad Request。

@RequestMapping(value = "/events", method = RequestMethod.GET)
public @ResponseBody List<EventDto> addOrder(@RequestParam(value = "start") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date start,
                                             @RequestParam(value = "end") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)   Date end) {
    LOGGER.info("Requesting event from [{}] to [{}]", start, end);
    return new LinkedList<EventDto>();
}

2 个答案:

答案 0 :(得分:2)

由于时间戳不是格式化的日期(通过Java的SimpleDateFormat选项),而是更多的数值:我建议为Date对象创建一个自定义数据绑定器,如果你这样做的话比这个单一的例子。见http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#portlet-ann-webdatabinder

作为一次性解决方案,您可以将它们绑定到Long个参数,并使用new Date(start)创建自己的Date对象。

答案 1 :(得分:0)

使用@InitBinderWebDataBinder

@RestController
public class SimpleController {

    //... your handlers here...

    @InitBinder
    public void initBinder(final WebDataBinder webdataBinder) {
        webdataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(new Date(Long.valueOf(text)));
            }
        });
    }
}