Java 8有一个全新的日期和时间API.此API中最有用的类之一是LocalDateTime,用于保存与时区无关的日期时间值.
java.util.Date为此目的,使用遗留类可能有数百万行代码.因此,当连接新旧代码时,需要在两者之间进行转换.由于似乎没有直接的方法来实现这一点,怎么办呢?
我想转换java.time.LocalDate成java.util.Date类型.因为我想将日期设置为JDateChooser.或者是否有支持java.time日期的日期选择器?
我知道:
仍然最终IMO都可以作为大多数应用程序用例的类型.例如:目前我正在运行一个批处理作业,我需要根据日期计算下一次运行,我很难找到这两种类型之间的优缺点(除了Instant的纳秒级精度优势和时区部分) of LocalDateTime).
您能说出一些应用示例,其中只应使用Instant或LocalDateTime吗?
编辑:注意有关精度和时区的LocalDateTime的误读文档
我正在使用JodaTime 1.6.2.
我有一个LocalDate我需要转换为(Joda)LocalDateTime或java.sqlTimestampfor ormapping.
原因是我已经想出如何在a LocalDateTime和a 之间进行转换java.sql.Timestamp:
LocalDateTime ldt = new LocalDateTime();
DateTimeFormatter dtf = DateTimeFormatter.forPattern("yyyy-MM-dd HH:mm:ss");
Timestamp ts = Timestamp.valueOf(ldt.toString(dtf));
Run Code Online (Sandbox Code Playgroud)
所以,如果我可以相互转换LocalDate和LocalDateTime的话,我可以让继续转换java.sql.Timestamp.感谢任何正确方向的推动!
如何格式化日期字段(数据库字段)显示Jasper/iReports(4.5.1)中文本的一部分
通过报告中的文本字段显示...(请使用Groovy)
"此日期的子总数:"+ $ F(DEPOSIT_DATE)
我试过(new SimpleDateFormat("MM/dd/yyyy")).parse($F{DEPOSIT_DATE}),我收到错误消息:
net.sf.jasperreports.engine.fill.JRExpressionEvalException:
Error evaluating expression : Source text : (new SimpleDateFormat("MM/dd/yyyy")).parse($F{BANK_DATE})
Run Code Online (Sandbox Code Playgroud)
我想在报告中显示的内容如下......
此日期的子总数:MM/DD/YYYY - 格式......
我试图java.time.LocalDate在我的报告中显示以下格式:
<textField pattern="EEEEE dd MMMMM yyyy">
<reportElement x="64" y="0" width="150" height="20" uuid="5e003c53-2327-4f75-9adf-831a3bb494ff"/>
<textElement verticalAlignment="Middle">
<font isBold="true" isUnderline="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{dateFacture}]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)
但我得到的日期如下:2017-03-09。是由于 java.time.LocalDate 类型造成的吗?