Отображение свободного времени в формате маркера с часовым поясом - PullRequest
0 голосов
/ 23 апреля 2019

Мне нужно отобразить время в двух разных часовых поясах.

Следующее работает, но форматирование для чикагского времени ужасно:

<p><b>Report performed (Belfast): </b> ${.now?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}</p>
<p><b>Report performed (Chicago): </b> ${.now?iso('America/Chicago')}</p>

Результаты:

Report performed (UTC): Apr 23, 2019 12:08:27 PM
Report performed (Chicago): 2019-04-23T06:08:27-05:00

Попытка объединения приводит к ошибке:

<p><b>Report performed (Chicago): </b> ${.now?iso('America/Chicago')?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}</p>

12:30:18.307 [main] ERROR freemarker.runtime - Error executing FreeMarker template

freemarker.core.NonHashException: для левого операнда "... [...]": ожидался хеш, но он был преобразован в строку (обертка: f.t.SimpleScalar): ==> .now? iso ('America / Chicago')? string [в шаблоне "emailTemplate.ftl" в строке 80, столбец 54]


Трассировка стека FTL ("~" означает вложение):

- Ошибка: $ {. Now? Iso ("America / Chicago")? String [... [в шаблоне "emailTemplate.ftl" в строке 80, столбец 52]

at freemarker.core.DynamicKeyName.dealWithStringKey(DynamicKeyName.java:142) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:75) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Expression.eval(Expression.java:81) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DollarVariable.accept(DollarVariable.java:59) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.visit(Environment.java:327) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.visit(Environment.java:333) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.process(Environment.java:306) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.template.Template.process(Template.java:386) [freemarker-2.3.25-incubating.jar:2.3.25]
at mycode...

1 Ответ

1 голос
/ 23 апреля 2019

Я полагаю, что Вы не можете сделать это за один раз, потому что .iso или любой другой формат даты вернет строку.по умолчанию вы можете указать time_zone в ftl и сделать формат даты.

<#setting time_zone="America/Chicago">
<#assign aDateTime = .now>
${aDateTime?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}

Это дает вывод Tuesday, April 23, 2019, 07:35 AM (CDT)

Для дальнейшего использования Пожалуйста, посмотрите на этот Документ

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