Преобразование даты Freemarker
Я пытаюсь заставить работать следующее, но не могу отобразить правильное значение.
Предполагая, что SHIPPING_DATE обрабатывается как строка со значением = 2016/05/23:
<#setting date_format="MM/dd/yyyy">
<#setting locale="en_US">
<#assign ship_date>${SHIPPING_DATE}</#assign>
${ship_date?date("MM/dd/yyyy")}
Выходной 12/05/0190, но я ожидаю 23.05.2016. Кто-нибудь поможет, а также объяснит, что я делаю не так, пожалуйста?
2 ответа
Если у вас есть строка в ship_date
лайк 2016/05/23
, то вы можете проанализировать его в реальном значении даты с ship_date?date("yyyy/MM/dd")
, Обратите внимание, что это не MM/dd/yyyy
, как в вашем примере. ?date
означает "преобразовать в дату", и вы указываете ей, как интерпретировать строку. Затем, когда вы печатаете реальное значение даты (а не строку) с ${...}
тогда он будет преобразован в строку в соответствии с data_format
настройки конфигурации, так что тогда MM/dd/yyyy
будет хорошо. Не имеет значения, как было получено это реальное значение даты (как с string?date(format)
или непосредственно из модели данных).
шаблон.ftl
<#list listaCategoria as c>
<tr>
<td> ${c.dataCadastro?datetime("yyyy-MM-dd")?string("dd/MM/yyyy")}</td>
</tr>
</#list>
RelatorioService.java
LocalDate dataCadastro = LocalDate.of(1995, 12, 7);
Результат:
07/12/1995