時間戳是處理時間的一種簡單方式,它是自 1970 年 1 月 1 日 (00:00:00 GMT)起經過的秒數或毫秒數。本文將介紹如何在 Java 中使用內置工具類將時間戳轉換為日期時間,以及如何將日期時間轉換為時間戳。
一、將時間戳轉換為日期時間
我們通常使用 java.util.Date 和 java.util.Calendar 類來解析時間戳。其中,java.util.Date 是一個表示日期和時間的抽象類,java.util.Calendar 是一個用於操作日期和時間的類。
首先,將時間戳轉換為 java.util.Date 對象,然後使用 SimpleDateFormat 類將其格式化為字符串。
long timestamp = 1633536123000L; // 時間戳,單位為毫秒 Date date = new Date(timestamp); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = sdf.format(date); System.out.println(formattedDate); // 輸出:2021-10-06 15:35:23
在上述代碼中,我們使用了 SimpleDateFormat 類,它可以將日期格式化為指定樣式的字符串。在這裡,我們將日期格式化為 “yyyy-MM-dd HH:mm:ss” 格式的字符串。
另外,還可以使用 java.time 包中的類來解析時間戳。java.time 包是在 Java 8 中引入的,其中包含了新的日期和時間 API。
long timestamp = 1633536123000L; // 時間戳,單位為毫秒 Instant instant = Instant.ofEpochMilli(timestamp); LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String formattedDate = dateTime.format(formatter); System.out.println(formattedDate); // 輸出:2021-10-06 15:35:23
在上述代碼中,我們使用了 Instant 和 LocalDateTime 類,Instant 類表示時間線上的一個瞬時點,而 LocalDateTime 類則表示一個日期-時間。我們可以使用 Instant.ofEpochMilli() 方法將時間戳轉換為 Instant 對象,再使用 LocalDateTime.ofInstant() 方法將其轉換為 LocalDateTime 對象。最後,使用 DateTimeFormatter 類將 LocalDateTime 格式化為字符串。
二、將日期時間轉換為時間戳
將日期時間轉換為時間戳,可以使用 java.util.Date 類中的 getTime() 方法。
String datetimeString = "2021-10-06 15:35:23"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse(datetimeString); long timestamp = date.getTime(); System.out.println(timestamp); // 輸出:1633536123000
在上述代碼中,我們首先將字符串格式的日期時間轉換為 java.util.Date 對象,然後使用 getTime() 方法將其轉換為時間戳。
同樣,也可以使用 java.time 包中的類來將日期時間轉換為時間戳。
String datetimeString = "2021-10-06 15:35:23"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse(datetimeString, formatter); long timestamp = dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli(); System.out.println(timestamp); // 輸出:1633536123000
在上述代碼中,我們先將日期時間字符串解析為 LocalDateTime 對象,然後調用 atZone() 方法將其轉換為 ZoneDateTime 對象。接着使用 toInstant() 方法將其轉換為 Instant 對象,最後使用 toEpochMilli() 方法將 Instant 轉換為時間戳。
三、總結
藉助 Java 提供的內置工具類,我們可以輕鬆地將時間戳轉換為日期時間,或將日期時間轉換為時間戳。其中,java.util.Date 和 java.util.Calendar 類較為傳統,而 java.time 包中的類則是在 Java 8 中引入的新的日期和時間 API。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/255177.html