当前位置: 首页 > 知识库问答 >
问题:

Java中的JDBC时间戳转义格式和SimpleDateFormat

邓鸿雪
2023-03-14

不幸的是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.ffffffff字符串的问题,我感兴趣的是一种声明性方法,即SimpleDateFormat模式,它不需要对输入字符串进行额外修改

示例:

我希望输入2012-02-05 17:00:34.427000000解析为java.util.date,其中milliseconds部分为427

下面是我到目前为止尝试过的格式列表,由于各种原因,它们都失败了:

  • 新建SimpleDateFormat(“yyyy-mm-dd-hh.mm.ss.sss000000”)-java.text.ParseException:Format.ParseObject(String)失败
  • 新的SimpleDateFormat(“YYYY-MM-DD hh:mm:ss.sssssssssssss”,locale.us)新的SimpleDateFormat(“YYYY-MM-DD hh:mm:ss.sss”,locale.us)都被解析为Frie Feb 10 15:37:14,而不是预期的Sun Feb 05 17:00:34。(427000000的纳秒部分被视为毫秒,即使只指定了SSS)

共有1个答案

马清野
2023-03-14

我知道这是一个迟来的答案,但我一直在研究一个类似的问题,我遇到了这个问题。

这里的问题是simpledateformat需要一个java.util.date,它没有纳秒字段。因此,它不处理那个案件。java.sql.timestamp文档说明它是java.util.date和纳秒字段的组合。第二个的日期/时间值存储在对象的日期部分。这意味着可以忽略剩余的毫秒,而支持纳秒场。在我看来,这是糟糕的设计,因为java.sql.timestampjava.util.date的直接子类。

无论如何,为了回答这个问题,我认为不可能在不附加simpledateformat生成的字符串的情况下打印带有纳秒的时间戳。

下面是一种方法:

    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.");
    format.setTimeZone(TimeZone.getDefault()); // Set the TimeZone to whatever you are expecting.

    System.out.println(format.format(timestamp) + String.format("%09d", timestamp.getNanos());   

编辑:

 类似资料:
  • 问题内容: 有没有一种方法可以将UTC时间格式化为我想要的Java中任意字符串格式?基本上,我在考虑让某个类使用时间戳,然后传递它是字符串,告诉它如何格式化,然后它为我返回格式化的字符串。有没有办法做到这一点? 问题答案: java.text.SimpleDateFormat类以对语言环境敏感的方式提供日期的格式设置和解析。 SimpleDateFormat的javadoc标头是详细信息的很好来源

  • 我正在开发一个带有MySQL数据库的Java应用程序,该数据库位于与我的服务器不同的时区,我正试图决定在我的数据库上使用DATETIME还是TIMESTAMP。 在阅读了诸如我应该使用字段'datetime'还是'TIMESTAMP'之类的问题,以及MySQL文档之后,我认为TIMESTAMP更适合我,因为它将值转换为UTC以存储,并返回到当前时区以进行检索。 此外,正如用户Jesper在本文中所

  • 问题内容: 我正在尝试从Netezza将具有格式的记录插入Oracle,但是我得到的日期类型无效。 我该如何做到这一点? 问题答案: http://www.sqlfiddle.com/#!4/22115/1

  • 本文向大家介绍php格式化时间戳,包括了php格式化时间戳的使用技巧和注意事项,需要的朋友参考一下 CMS中一般显示时间比较新的文章需要显示几分钟前,几天前这样,但是一般数据库里面记录的都是时间戳(至少我习惯这样),所以就需要一个转化的过程,根据网上的资料加上自己的修改整理封装了两段代码 下面是封装好的方法 或者 更详细的 再分享一个类似的

  • 本文向大家介绍JS的时间格式化和时间戳转换函数示例详解,包括了JS的时间格式化和时间戳转换函数示例详解的使用技巧和注意事项,需要的朋友参考一下 JS的时间格式化和时间戳转换函数 ps:js 时间戳 和 格式化时间转化 到此这篇关于JS的时间格式化和时间戳转换函数示例详解的文章就介绍到这了,更多相关js 时间格式化时间戳转换函数内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持

  • 本文向大家介绍js时间戳转为日期格式的方法,包括了js时间戳转为日期格式的方法的使用技巧和注意事项,需要的朋友参考一下 什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数