美文网首页程序员
从零单排Java 8(2) —— Timestamp、Strin

从零单排Java 8(2) —— Timestamp、Strin

作者: 油腻的Java | 来源:发表于2019-04-10 13:41 被阅读22次

    简介

    image.png

    Timestamp是Java中少数遗留日期时间对象之一。

    本文我们将讨论如何进行 Timestamp和String的互转

    由于Timestamp依赖于Java专有格式,我们可以看看,在Java8中,如何更高效、快捷的转换。

    String 转 Timestamp

    标准格式

    解析一个最简单的方法,可以用Timestamp的valueOf 方法,就可以满足:

    
    Timestamp.valueOf("2018-11-12 01:02:03.123456789")
    
    

    当我们的String采用JDBC时间戳格式时- yyyy-m [m] -d [d] hh:mm:ss [.f ...] -,它会相对简单一些。

    具体的格式请看下面表格

    格式 描述 示例
    yyyy 表示年份,并且必须有四位数字 2019
    m[m] 表示月份,必须有一个或两个数字(从1到12) 1,11
    d[d] 表示天数,必须有一个或两个数字(从1到31) 1,31
    hh 代表一天中的小时,允许的值从0到23 0,23
    mm 分钟,允许的值从0到59 0,59
    ss 秒,允许的值从0到59 0,59
    [.f…] 小数秒(毫微秒)精度,因此允许的值为0到999999999 123456789

    其他格式

    现在,如果它不是JDBC时间戳格式,该如何解决, 幸运的是, valueOf 也可以接收参数为 LocalDateTime 的实例。

    这意味着我们可以采用任何格式的日期,我们只需要先将String转换为LocalDateTime 就可以了:

    
    String pattern = "MMM dd, yyyy HH:mm:ss.SSSSSSSS";
    String timestampAsString = "Apr 09, 2019 13:02:56.12345678";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
    LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(timestampAsString));
    
    

    然后我们可以使用valueOf

    
    Timestamp timestamp = Timestamp.valueOf(localDateTime);
    assertEquals("2019-04-09 13:02:56.12345678", timestamp.toString());
    
    

    请注意, 与Date对象不同,Timestamp对象能够存储毫微秒。

    相关文章

      网友评论

        本文标题:从零单排Java 8(2) —— Timestamp、Strin

        本文链接:https://www.haomeiwen.com/subject/mhiiiqtx.html