Как изменить формат даты (название месяца) в iReport? - PullRequest
2 голосов
/ 28 декабря 2011

У меня есть требование изменить формат даты в iReport. В настоящее время я использовал запрос SQL для сбора данных. Вот мой запрос в iReport

SELECT DATE_FORMAT (CURRENT_DATE, '% d-% m-% Y') AS currentDate, верхнее (e.name) AS имя, e.address, Upper (ea.comName) AS comName blablablabla .....

и поле currentDate покажет 28-12-2011

Требуется изменить месяц (12) на «Декабрь», а не «декабрь». Или, если месяц равен 1, то в отчете должно быть «Januari».

Названия месяцев: [Януари, Февруари, Мак, Апрель, Мей, Июнь, Юлай, Огос, Сентябрь, Октябрь, Ноябрь, Декабрь].

Могу ли я выполнить это условие в iReport?

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 28 декабря 2011

Вы можете создать и использовать скриптлет или использовать выражения, как в следующих примерах:

  • Использование национальной локали (ms_MY, Малайзия):
<field name="currentDate" class="java.sql.Timestamp"/>
...
<textField>
    <reportElement x="300" y="0" width="100" height="20"/>
    <textElement/>
    <textFieldExpression><![CDATA[(new DateFormatSymbols(new Locale("ms", "MY")).getMonths())[$F{currentDate}.getMonth()]]]></textFieldExpression>
</textField>
  • Использование условного ? : оператора
<field name="currentDate" class="java.sql.Timestamp"/>
...
<textField>
    <reportElement x="200" y="0" width="100" height="20"/>
    <textElement/>
    <textFieldExpression><![CDATA[$F{currentDate}.getMonth() == 0 ?
    "Januari" : $F{currentDate}.getMonth() == 1 ?
    "Februari" : $F{currentDate}.getMonth() == 2 ?
    "Mac" : $F{currentDate}.getMonth() == 3 ?
    "April" : $F{currentDate}.getMonth() == 4 ?
    "Mei" : $F{currentDate}.getMonth() == 5 ?
    "Jun" : $F{currentDate}.getMonth() == 6 ?
    "Julai" : $F{currentDate}.getMonth() == 7 ?
    "Ogos" : $F{currentDate}.getMonth() == 8 ?
    "September" : $F{currentDate}.getMonth() == 9 ?
    "Oktober"  : $F{currentDate}.getMonth() == 10 ?
    "November"  : $F{currentDate}.getMonth() == 11 ?
    "Disember" : "Unknown"
    ]]></textFieldExpression>
</textField>
  • Вы можете прочитать эту статью какиспользуйте скриптлет .
1 голос
/ 11 июня 2013

Чтобы отобразить даты в разных форматах, один из вариантов - отформатировать даты на основе локалей.Например, следующее выражение использует локаль текущего пользователя:

DateFormat.getDateInstance(DateFormat.LONG, $P{REPORT_LOCALE}).format($F{currentDate})
...