【发布时间】:2011-11-29 11:55:33
【问题描述】:
得到一个格式如下的字符串:YYYY-MM-DD-HH.MM.SS.NNNNNN 时间戳来自 DB2 数据库。我需要将其解析为 java.sql.Timestamp 并且不会丢失任何精度。到目前为止,我一直无法找到现有的代码来解析那么远到微秒。 SimpleDateFormat 返回一个 Date 并且只解析到毫秒。简单地看了看 JodaTime,也没有看到这行得通。
【问题讨论】:
-
如果时间戳来自 DB2 数据库,为什么将其读取为字符串而不是直接读取为时间戳?
-
时间戳来自数据库,客户端将其返回给我们进行键控读取。
-
如果您使用时间戳进行键控读取,并且您可能首先将其发送到客户端,您也可以考虑将其转换为长纳秒,然后再读回,而不是一个字符串值。即发送
long l = ts.getTime(),然后用new Timestamp(l)回读。你甚至可以序列化这个值以节省线路空间(但在这种情况下你会失去人类可编辑性)。 -
如果我的字符串不是这种格式,而是 mm/dd/yyyy hh:mm 格式怎么办。在这种情况下如何转换为时间戳格式
-
更新 Java 8 中内置的新 java.time package 可处理纳秒级分辨率。根据您的情况,可能比处理 java.sql.Timestamp 更容易/更好。您也可以转换to 和from java.time & java.sql.Timestamp。
标签: java string parsing timestamp