如何在iReport中更改日期格式(月份名称)?

时间:2011-12-28 08:13:33

标签: jasper-reports ireport date-format

我需要更改iReport中的日期格式。 目前我使用SQL查询来收集数据。 这是我在iReport中的查询

  

SELECT DATE_FORMAT(CURRENT_DATE,'%d-%m-%Y')AS currentDate,Upper(e.name)AS名称,e.address,   Upper(ea.comName)AS comName blablablabla .....

和currentDate字段将显示28-12-2011

要求是什么将月份(12)更改为" Disember"不是" 12月"。或者,如果月份是1,那么报告应该是" Januari"。

月份名称是[Januari,Februari,Mac,April,Mei,Jun,Julai,Ogos,September,Oktober,November,Disember]。

我可以在iReport中执行这些条件吗?

提前致谢。

2 个答案:

答案 0 :(得分:6)

您可以创建和使用scriptlet,也可以使用此示例中的表达式:

  • 使用国家/地区( 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 :(得分:1)

要以不同格式显示日期,一个选项是根据区域设置格式化日期。例如,以下表达式使用当前用户的语言环境:

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