從零單排Java 8(2) —— Timestamp、String互轉

簡介

image.png

Timestamp是Java中少數遺留日期時間對象之一。bash

本文咱們將討論如何進行 Timestamp和String的互轉ui

因爲Timestamp依賴於Java專有格式,咱們能夠看看,在Java8中,如何更高效、快捷的轉換。spa

String 轉 Timestamp

標準格式

解析一個最簡單的方法,能夠用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));

複製代碼

而後咱們能夠使用valueOfstring

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

複製代碼

請注意, 與Date對象不一樣,Timestamp對象可以存儲毫微秒。it

相關文章
相關標籤/搜索