当前位置: 首页 > 知识库问答 >
问题:

如何用模式格式化java.time.localdateTime和java.time.localdate?

雷飞虎
2023-03-14

在以下片段中,$F属性属于java.time.localdateTimejava.time.localdate类。

<textField pattern="EE. dd.MM.yyyy">
    <reportElement...>
    </reportElement>
    <textFieldExpression><![CDATA[$F{theLocalDateTime}]]></textFieldExpression>
</textField>

共有1个答案

谭裕
2023-03-14

要在当前版本的jasper-report中为date/time对象使用pattern属性,您需要一个java.util.date类或它的一个子类。

解决方案是转换java.time.localdatejava.time.localdateTime

java.time.localdate

<textField pattern="EE. dd.MM.yyyy">
    <reportElement...>
    </reportElement>
    <textFieldExpression><![CDATA[java.util.Date.from($F{theLocalDate}.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant())]]></textFieldExpression>
</textField>
<textField pattern="EE. dd.MM.yyyy">
    <reportElement...>
    </reportElement>
    <textFieldExpression><![CDATA[java.util.Date.from($F{theLocalDateTime}.atZone(java.time.ZoneId.systemDefault()).toInstant())]]></textFieldExpression>
</textField>
<textField pattern="EE. dd.MM.yyyy">
    <reportElement...>
    </reportElement>
    <textFieldExpression><![CDATA[java.sql.Timestamp.valueOf($F{theLocalDate}.atStartOfDay())]]></textFieldExpression>
</textField>

java.time.localdatetime

<textField pattern="EE. dd.MM.yyyy">
    <reportElement...>
    </reportElement>
    <textFieldExpression><![CDATA[java.sql.Timestamp.valueOf($F{theLocalDateTime})]]></textFieldExpression>
</textField>

注意:应用模式总是更好的解决方案,特别是在导出到excel时,因为正确的类将传递给poi(因此excel将识别列为日期并应用与模式相同的格式)

 类似资料:
  • 问题内容: 在下面的摘录中,该属性属于类或。 如何在jasper报表中使用textField设置此属性的格式 ? 问题答案: 要在当前版本的jasper-report 中将 pattern属性 用于Date / Time对象,您需要一个类或它的子类之一。 解决的办法是转换 和 从java.time.LocalDate 从java.time.LocalDateTime [转换为 ](http://c

  • 以下是在格式化模式中使用字符。 Sr.No. 类和描述 1 0 如果存在较少的数字则显示0。 2 # 显示数字省略前导零。 3 . 小数分隔符。 4 , 分组分隔符。 5 E 指数格式的尾数和指数分隔符。 6 ; 格式分隔符。 7 - 负数前缀。 8 % 在乘以100后显示数字百分比。 9 ? 在乘以1000后将数字显示为mille。 10 X 将字符标记为数字前缀/后缀。 11 ' 标记特殊字符

  • 我正在尝试将存储为UTC的日期时间转换为给定时区的日期时间。据我所知,ZonedDateTime是正确的(“美国/芝加哥”比UTC晚5小时),但DateTimeForware在格式化日期时间时没有考虑偏移量。 我的挂钟时间:12:03 pm 输出: 我期望的格式化时间为:2019年8月29日下午12:03

  • 问题内容: 如何格式化双精度字符为字符串,并在整数和小数部分之间加点​​? 以上格式仅带有逗号:“,”。 问题答案: 正在使用JVM的默认语言环境。您可以使用或直接使用任何语言环境。 要么 要么 要么

  • 问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为

  • 以下是在格式化模式中使用字符。 编号 类 描述 1 如果数字较小,则显示0。 2 显示忽略前导零的数字。 3 小数分隔符。 4 分组分隔符。 5 指数格式的尾数和指数分隔符。 6 格式分隔符。 7 负数字前缀。 8 将乘以100后的数字显示为百分比。 9 与1000相乘后显示数字为千位。 10 将字符标记为数字前缀/后缀。 11 标记特殊字符的引号。 在这个例子中,我们根据不同的模式来格式化数字。