Spring如何管理Date参数?

时间:2019-08-13 19:52:50

标签: java spring-boot java-date

我有一个接受Date参数的端点。格式为yyyy-MM-dd'T'HH:mm:ssZ。我当前的时区设置为SGT。

如果我使用2019-08-13T00:00:00Z调用端点,则spring会将值转换为SGT 2019年8月13日星期二08:00:00。当我使用2019-08-13T00:00:00 + 08调用时:00,这将转换为SGT 2019年8月13日星期二00:00:00。

关于Spring如何处理此值的任何想法?另外,如果有手动(编程)方式,我可以达到相同的结果。有关我的端点,请参见下文。

@RequestMapping(value = "/export", method = RequestMethod.POST)
public void exportToS3(@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
    @RequestParam(value = "exportDate") Date exportDate) {

    controller.exportTransactions(exportDate);
}

2 个答案:

答案 0 :(得分:0)

String timeStamp = (new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss")
                   .format(Calendar.getInstance().getTime()))
                   .replace("_", "T");

其中Calendar.getInstance().getTime()是您的时间变量

答案 1 :(得分:0)

“ Z”表示日期位于UTC区域中,并且您的服务器正在SGT上运行或将其转换为SGT。在第二种情况下,“ + 8:00”表示区域为SGT或日期没有更改。

为了保持一致,您应该使用ZonedDateTime而不是Date。 ZonedDateTime将日期保留在相同的区域中并进行相应的转换。