Как мне преобразовать строку в дату в шаблоне скорости?
Я хочу преобразовать $ 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
в вашем контексте, как тривиальная техника отладки, если вы не понимаете, что происходит.