【发布时间】:2020-07-12 14:52:43
【问题描述】:
我有列数据类型为 "TIMESTAMP(0) WITH TIME ZONE" 的 oracle 数据库。哪个生产
比如 14/11/2019 06:30:00, +03:00 在数据库中。
当我试图从 java 获取这个时间戳时
我得到了java.text.ParseException: Unparseable date: "28-MAY-12 07.40.03 PM +03:00"。我们的项目 java 版本是 6 。我试过了
new SimpleDateFormat("dd-MM-yy hh.mm.ss") ,
new SimpleDateFormat("dd-MM-yy hh.mm.ss, Z"),
new SimpleDateFormat("dd-MM-yy hh.mm.ss, z") ,
new SimpleDateFormat("dd/MM/yy hh.mm.ss, z") ,
new SimpleDateFormat("dd/MM/yy hh.mm.ss, Z") ,
new SimpleDateFormat("dd/MM/yy hh.mm.ss")
但他们都没有为我工作所有的投掷java.text.ParseException: Unparseable date error.
在我的 java 端,我的类中有日期数据类型属性,我想从 oracle 数据库中检索数据,然后解析然后设置为日期数据类型属性,如下所示。
serDto.setTarih(new Timestamp(new SimpleDateFormat("dd-MM-yy hh.mm.ss").parse(str).getTime()));
对于前数据库时间戳数据看起来像:14/11/2019 06:30:00,+03:00,我想像上面一样检索日期。
提前谢谢你。
【问题讨论】:
-
你试图解析的字符串来自哪里?有没有办法将其格式更改为更易于解析的格式?
-
我正在读取 xml 文档元素,如 element.getElementsByTagName("PLZ_ID").item(0).getTextContent() 到 str 然后尝试解析。
-
我建议你不要使用
SimpleDateFormat、Date和Timestamp。这些类设计不佳且过时已久,尤其是第一个类是出了名的麻烦。而是从您的数据库中从java.time, the modern Java date and time API 获取OffsetDateTime。那么你可能不需要解析。
标签: java date date-format