時間戳是處理時間的一種簡單方式,它是自 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-tw/n/255177.html
微信掃一掃
支付寶掃一掃