Как мне преобразовать строку в дату в шаблоне скорости?

Я хочу преобразовать $ flightFromDate (format: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"))

Но не работает, когда я пытаюсь использовать $ escapeFromDate

1 ответ

В вашем коде есть несколько проблем. Во-первых, как заметил пользователь 7294900, правильное значение первого присваивания кажется довольно странным. Тогда вам не нужно создавать себе календарь (плюс, вы можете написать $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 в вашем контексте, как тривиальная техника отладки, если вы не понимаете, что происходит.

Другие вопросы по тегам