Spring引导@RequestParam unix时间戳到LocalDateTime

时间:2017-08-31 19:56:41

标签: java spring spring-boot unix-timestamp

假设我有我的RestController

@GetMapping("/")
public list(@RequestParam LocalDateTime date) {
}

我用日期请求参数发出一个GET请求作为unix时间戳,如下所示:

http://myserver.com/?date=1504036215944

如何让Spring Boot和jackson自动使用从unix时间戳到LocalDateTime的正确转换,而无需手动进行转换。

1 个答案:

答案 0 :(得分:0)

解决方案:

@GetMapping("/")
public @ResponseBody String list(TimestampRequestParam date) {
    return date.toString();
}

在setDate

中实现时间戳到日期转换器

注意吸气剂和吸气剂setter必须具有参数名称(类成员可以具有不同的名称)

class TimestampRequestParam {

    private Date date; // member name doesn't need to be like request parameter

    private static final SimpleDateFormat FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");

    public Timestamp2DateExample() { }

    // must have the same name as the request param
    public Date getDate() { 
        return date;
    }

    /**
     * @param timestamp
     * here we convert timestamp to Date, method name must be same as request parameter
     */
    public void setDate(String timestamp) {
        long longParse = Long.parseLong(timestamp);
        this.date = new Date(longParse);
    }

    @Override
    public String toString() {
        return "timestamp2date : " + FORMAT.format(date);
    }

}

输出示例(注意端口,可能配置不同)

$ curl localhost:8080?date=1504036215944

timestamp2date : 2017-08-29 22:50:15.944