В Freemarker измените формат выходной даты независимо от формата ввода - PullRequest
0 голосов
/ 28 сентября 2018
${(.vars["OCRResponse"].Date)?datetime("ANY RANDOM FORMAT")?string("mm-dd-yy").

Можем ли мы использовать If Else в пределах ?datetime, или мы можем решить эту проблему с помощью переключателя?

1 Ответ

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

Если этот формат даты довольно «случайный», и вам нужно это много делать, то вам, вероятно, лучше написать реализацию freemarker.core.TemplateDateFormat + TemplateDateFormatFactory, выполнить логику парсинга сложной даты в Java, а затем зарегистрироватьфабрика как «пользовательский формат даты» (это настройка конфигурации FreeMarker), скажем, с именем "random".Тогда вы можете сделать ${OCRResponse.Date?date.@random?string('MM-dd-yy')}.Если вы установите для параметра конфигурации date_format значение MM-dd-yy, то вы даже можете просто написать ${OCRResponse.Date?date.@random}.

. Вы можете найти конкретные примеры определения пользовательских форматов здесь: https://freemarker.apache.org/docs/pgui_config_custom_formats.html

Другая возможность, конечно, использовать #if / #elseif / #else.Если вам нужно сделать это в нескольких местах, поместите логику парсера в #function, где вы #return проанализировали дату.Поэтому, когда вы вставляете дату, у вас просто есть что-то вроде ${parseRandom(OCRResponse.Date)} (здесь я предположил, что date_format - это MM-dd-yy, в противном случае добавьте ?string('MM-dd-yy')).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...