Java 如何在velocity模板中将字符串转换为日期?
我想将$departureFromDate(格式:yyyy-MM-dd)转换为date对象,以便对其执行增量操作。我一直在尝试以下方法:Java 如何在velocity模板中将字符串转换为日期?,java,spring,apache,velocity,velocity-tools,Java,Spring,Apache,Velocity,Velocity Tools,我想将$departureFromDate(格式:yyyy-MM-dd)转换为date对象,以便对其执行增量操作。我一直在尝试以下方法: #set($departureFromDate = "{{jsonPath request.body '$.departureFromDate'}}") #set($dateObj = $date.toDate('yyyy-MM-dd',"$departureFromDate")) #set($calendar = $date.getCalendar())
#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时不起作用。您的代码中有几个问题。首先,正如user7294900所指出的,第一次赋值的正确值似乎很奇怪。然后,您不需要实例化日历(另外,您可以编写
$date.calendar
而不是$date.getCalendar()
,并且不需要在字符串参数周围加双引号)
上面的代码使用一个JSON解析工具,它的parse()
方法呈现一个JSON包装器,您应该在上下文中提供它
最后一条建议是,如果您还没有想到它,请确保在您的上下文中打印
$obj
和$obj.class.name
,如果您不了解发生了什么,这是一种微不足道的调试技术。为什么{{jsonPath request.body'$.departureFromDate'}}
可以工作?我正在从json请求中获取日期元素。请求中的日期格式为(yyyy-MM-dd)。实际上,我可以通过$departureFromDate使用显示的日期。只有当我试图像上面那样使用$departureFromDate来获取日期对象时,它才不起作用。
#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)