【发布时间】:2012-07-29 06:01:37
【问题描述】:
我正在尝试使用SimpleDateFormat 模式来解析和格式化 JDBC 时间戳,特别是以下格式的日期yyyy-mm-dd hh:mm:ss.fffffffff,其中ffffffffff 表示纳秒。
很遗憾new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS000000")不起作用,抛出如下异常:
java.text.ParseException: Format.parseObject(String) failed
SimpleDateFormat 是否有可能,或者我必须创建 java.text.DateFormat 的自定义子类来处理这种情况? 请注意,这不是关于如何在 Java 中解析yyyy-mm-dd hh:mm:ss.fffffffff 字符串的问题,我对声明性方法感兴趣,即不需要对输入字符串进行额外修改的 SimpleDateFormat 模式。
示例:
我希望输入 2012-02-05 17:00:34.427000000
被解析为 java.util.Date,其中毫秒部分为 427。
这是我迄今为止尝试过的格式列表,但由于各种原因,它们都失败了:
-
new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSS000000")-java.text.ParseException: Format.parseObject(String) failed -
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSSSSS", Locale.US)和new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US)- 都被解析为 Fri Feb 10 15:37:14 而不是预期的 Sun Feb 05 17:00:34。 (427000000 的纳秒部分被视为毫秒,即使只指定了 SSS)
【问题讨论】:
-
“不起作用”非常模糊 - 会发生什么?
-
抛出以下异常:
java.text.ParseException: Format.parseObject(String) failed -
我基本上对以
yyyy-mm-dd hh:mm:ss.fffffffff这种格式解析java.sql.Timestamp日期感兴趣,其中ffffffffff表示纳秒。 -
@ejboy:您希望所有信息都精确到纳秒吗?你没有在你的问题中提到根本。请阅读tinyurl.com/so-hints
标签: java timestamp simpledateformat