Преобразование даты 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
Другие вопросы по тегам