首页 - 最近大事件 - 美国狙击手,从零单排Java 8(2) —— Timestamp、String互转,施华洛世奇官网

美国狙击手,从零单排Java 8(2) —— Timestamp、String互转,施华洛世奇官网

发布时间:2019-05-05  分类:最近大事件  作者:admin  浏览:229

简介



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 ...] -,它会相对简略一些。

详细的格局请看下面表格

格局描绘示例

其他格局

现在,假如它不是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目标能够存储毫微秒。

Timestamp 转 String

要格局化时刻戳,咱们将面对相同的应战,由于它的默许格局是专有的JDBC时刻戳格局:

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

可是,再次运用中心转化,咱们能够将生成的String格局化为不同的日期和时刻形式,如ISO-8601规范:

Timestamp timestamp = Timestamp.valueOf("2018-12-12 01:02:03.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

String timestampAsString = formatter.format(timestamp.toLocalDateTime());
assertEquals("2018-12-12T01:02:03.123456789", timestampAsString);

定论

Java中转化StringTimestamp目标,在Java8中有愈加方便方便的API。