Timestamp是Java中少数遗留日期时间对象之一。bash
本文咱们将讨论如何进行 Timestamp和String的互转ui
因为Timestamp依赖于Java专有格式,咱们能够看看,在Java8中,如何更高效、快捷的转换。spa
解析一个最简单的方法,能够用Timestamp的valueOf
方法,就能够知足:code
Timestamp.valueOf("2018-11-12 01:02:03.123456789")
复制代码
当咱们的String采用JDBC时间戳格式时- yyyy-m [m] -d [d] hh:mm:ss [.f ...] -
,它会相对简单一些。orm
具体的格式请看下面表格cdn
格式 | 描述 | 示例 |
---|---|---|
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 就能够了:blog
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
:string
Timestamp timestamp = Timestamp.valueOf(localDateTime);
assertEquals("2019-04-09 13:02:56.12345678", timestamp.toString());
复制代码
请注意, 与Date对象不一样,Timestamp对象可以存储毫微秒。it