如何在速度模板中将String转换为日期?

时间:2018-01-25 11:16:37

标签: java spring apache velocity velocity-tools

我想将$ departureFromDate(格式:yyyy-MM-dd)转换为日期对象,以便我可以对它执行增量操作。我一直试图通过以下方式实现:

#set($departureFromDate = "{{jsonPath request.body 
'$.departureFromDate'}}")
#set($dateObj = $date.toDate('yyyy-MM-dd',"$departureFromDate"))
#set($calendar = $date.getCalendar())   
$calendar.setTime($dateObj)  
$calendar.add(6,5)

如果给出的实际日期如上,则上述代码有效:

#set($dateObj = $date.toDate('yyyy-MM-dd',"2018-09-22"))

但是当我尝试使用$ departureFromDate时,它不起作用

1 个答案:

答案 0 :(得分:1)

您的代码中存在几个问题。首先,正如user7294900所指出的,第一次分配的正确值似乎很奇怪。然后,您不需要自己设置日历(另外,您可以编写$date.calendar而不是$date.getCalendar(),并且不需要围绕字符串参数使用双引号。

#set($body = '{ "departureFromDate" : "2018-03-01" }')
$json.parse($body)
#set($departureFromDate = $json.departureFromDate)
#set($dateObj = $date.toDate('yyyy-MM-dd', $departureFromDate))
#set($calendar = $date.toCalendar($dateObj))
$calendar.add(6, 5)

上面的代码使用了一个JSON解析工具,其parse()方法呈现了一个json包装器,您将在上下文中提供该工具。

作为最后的建议,如果您还没有想到它,请确保在您的上下文中打印$obj$obj.class.name作为一个简单的调试技术,如果你不明白会发生什么。