一、long時間類型介紹
在Java世界裡,一個時間都被表示為一個long類型的數值,也就是一個整數。這個數值代表的是自1970年1月1日00:00:00到此時此刻的毫秒數。這個時間被稱為Unix時間戳,日期格式是UTC。
舉個例子,long時間類型表示的時間2019年1月1日10點30分在程序中表示為1546312200000L,其中L表示這個數值是一個long類型。
public static LocalDateTime timeStamptToLocalDateTime(long timeStamp){
return Instant.ofEpochMilli(timeStamp).atZone(ZoneId.systemDefault()).toLocalDateTime();
}
二、LocalDateTime介紹
LocalDateTime是Java 8引入的日期時間API,它表示日期時間,但不帶時區信息。這個類有點類似於Calendar類和Date類的合體,但是它們之間有很多不同之處。
LocalDateTime類包含兩個LocalDate和LocalTime類的對象,可以訪問日期和時間的值。它提供的方法可以獲得日期和時間,還可以進行計算和格式化操作。此外,它不是線程安全的。
三、從long類型轉換為LocalDateTime類型
1、使用java.util.Date類轉換
在Java 8之前,我們可以使用java.util.Date類來將long類型的時間戳轉換為日期對象,然後使用SimpleDateFormat將其格式化為字符串。Java 8之後,我們可以使用java.time包中的類。
public static LocalDateTime longToLocalDateTime(long time) throws ParseException {
long unixTime = time;
Date date = new Date(unixTime);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String stringDate = simpleDateFormat.format(date);
LocalDateTime localDateTime = LocalDateTime.parse(stringDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
return localDateTime;
}
2、使用java.time包轉換
Java 8之後,我們可以使用java.time包中的類來將long類型的時間戳轉換為LocalDateTime對象。
public static LocalDateTime longToLocalDateTime(long timestamp) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
}
四、從LocalDateTime類型轉換為long類型
從LocalDateTime類型轉換為long類型的代碼也很簡單。我們可以使用java.time.LocalDateTime類的toInstant(ZoneOffset)方法來將LocalDateTime轉換為Instant類型,然後使用Instant的toEpochMilli()方法將其轉換為long類型的時間戳。
public static long localDateTimeToLong(LocalDateTime localDateTime) {
ZoneOffset zoneOffset = ZoneOffset.of("+8");
return localDateTime.toInstant(zoneOffset).toEpochMilli();
}
五、總結
本文主要介紹了Java中long類型和LocalDateTime類型的區別及轉換方式。通過以上代碼示例及詳細的文字解釋,相信各位讀者已經能夠清晰地理解這兩種時間類型的使用方式,也能夠通過代碼實現它們之間的互相轉換。好了,本文落筆至此,感謝大家的閱讀。
原創文章,作者:HWGW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144294.html