Форматирование даты Проблема в шаблоне freemarker - PullRequest
0 голосов
/ 12 сентября 2018

У меня введена дата как «20170101» (ГГГГММДД), мне просто нужно написать шаблон бесплатного маркера для преобразования или форматирования указанной даты в «2017-01-01 00:00:00» (ГГГГ-ММ-ДД ЧЧ: MM: SS) как дата-время над форматом.

Я пробовал как

<#assign createdOn = '20170101'> Dates="${createdOn?datetime("MMM dd yyyy HH:mm:ss")?date}

Но возвращается ошибка: «Строка не соответствует ожидаемому формату даты / времени / даты и времени. Строка для анализа была:« 20170101 ». Ожидаемый формат:« МММ дд гггг ЧЧ: мм: сс » ». Вложенная причина приведена ниже: Неразборчивая дата: "20170101"

Пожалуйста, скажите мне, как проанализировать мой ожидаемый формат даты и времени из моего ввода?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Если у вас есть строка (не java.util.Date), как в вашем примере, то сначала она должна быть проанализирована до Date через ?date / ?datetime? time, где вы предоставляете формат из строки . (Учтите, что что-то вроде 20180102 не может быть однозначно проанализировано, если формат не указан.) В этот момент вы можете просто напечатать значение, и оно будет отформатировано в соответствии со значением по умолчанию datetime_format (или date_format и т. Д.) настроен для FreeMarker. Если этот формат не очень хорош, вы можете вызвать другой с помощью ?string(theFormatYouWant). Итак, в вашем случае:

<#assign createdOn = '20170101'>
Date="${createdOn?datetime("yyyyMMdd")?string("yyyy-MM-dd HH:mm:ss")}

Но опять же, как правило, вам не нужен ?string(...), вместо этого настройте предпочитаемый формат глобально.

0 голосов
/ 12 сентября 2018

Если ваш ввод "20170101", то ожидаемый формат "YYYYMMDD".

Так что замените "MMM dd yyyy HH:mm:ss" на "yyyyMMdd".

...