我有一个接受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);
}
答案 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将日期保留在相同的区域中并进行相应的转换。