【发布时间】:2013-08-27 02:00:06
【问题描述】:
我有一个实体字段声明为日期,并映射到 oracle 中的日期字段。
当我打印该字段的值时,我得到的日期格式类似于2013-04-23 09:05:03.0。
我需要将此日期转换为 ISO 8601 格式。所以我用了:
System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);
private static DatatypeFactory df = DatatypeFactory.newInstance();
public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
if (date == null) {
return null;
} else {
DatatypeFactory df = DatatypeFactory.newInstance();
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
以下代码返回:
System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);
// Output
Converted Date: 2013-04-23T09:05:03.000-05:00
问题:
- 有
000而不是实际号码。不知道为什么? - 休眠
2013-04-23 09:05:03.0末尾的0是什么?如何获取完整日期?
当我通过Date 时,我得到了我需要的结果。:
System.out.println("Converted Date:" + asXMLGregorianCalendar(new Date());
// Output
Converted Date: 2013-08-23T17:19:15.664-05:00
这就是我需要的。而不是000,我需要毫秒。
Hibernate 是否正在处理日期?
【问题讨论】:
-
0 是毫秒。你所说的“全日约会”是什么意思?打印出来的日期对我来说看起来很满。再一次,ISO 8601 格式太模糊了。 ISO 8601 描述了大量的日期/时间格式。你能告诉我你想要达到的日期格式是什么吗?然后,我可以帮助你如何实现它。
-
谢谢,我更新了我的问题。请检查
-
问题似乎是任何将数据放入您的数据库都会截断到最接近的秒数。打印出来的代码很好。
-
000 是毫秒。我认为这里没有问题。 1000 毫秒就是一秒。所以毫秒可以有 000 到 999 之间的任何值。确保你的数据库也存储毫秒。否则,您将始终看到 000。
-
您可以通过如下查询查看存储在 oracle 中的完整值:
select to_char(timestampColumn, 'YYYY-MM-DD"T"HH24:MI:SS.ff3') from table;
标签: java oracle hibernate date datetime