一、獲取8位時間
LocalDate可以獲取到年月日等信息。我們可以利用這個信息來獲取一個8位的時間,並將其轉換為時間戳。
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String formatNow = now.format(formatter);
在這個例子中,我們利用`LocalDate.now()`獲取當前的年月日信息。然後,使用`DateTimeFormatter`將其格式化為“yyyyMMdd”的形式。最終,通過`format()`方法獲取到一個8位的時間。
二、LocalTime轉Date
如果我們已經有了一個LocalTime的實例,那麼我們可能需要將其轉換成Date格式,以便進行時間計算等操作。下面是一個簡單的示例:
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate,localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
首先,我們獲取了當前的`LocalTime`和`LocalDate`。然後,使用`LocalDateTime`將其組合成`LocalDateTime`。接着,獲取默認時區,並通過`atZone()`方法將`LocalDateTime`轉換為`ZonedDateTime`。最後,通過`toInstant()`和`from()`方法將`ZonedDateTime`轉換為`Date`類型。
三、Date轉LocalDate
與上面相反,有時我們需要將一個Date類型的時間轉換為LocalDate類型。下面是一個簡單的示例:
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
LocalDate localDate = localDateTime.toLocalDate();
首先,我們創建了一個`Date`類型的實例。然後,通過`toInstant()`方法將其轉換為`Instant`格式。接着,獲取默認時區,並使用`ofInstant()`將`Instant`轉換為`LocalDateTime`格式。最後,通過`toLocalDate()`方法將`LocalDateTime`轉換為`LocalDate`類型。
四、LocalDate轉Date
如果我們已經有了一個LocalDate類型的實例,也可以將其轉換為Date類型,具體方法如下:
LocalDate localDate = LocalDate.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
Date date = Date.from(instant);
首先,我們獲取當前的`LocalDate`實例。然後,獲取默認時區,並將`LocalDate`轉換為0點整的`LocalDateTime`。接着,通過`atZone()`將其轉換為`ZonedDateTime`類型,最終轉換為`Instant`類型和`Date`類型。
五、LocalDate轉時間戳
最後,我們來到了本文的主題:如何使用`LocalDate`轉換為時間戳。
LocalDate localDate = LocalDate.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
long stamp = instant.toEpochMilli() / 1000;
首先,我們還是獲取了當前的`LocalDate`實例。然後,獲取默認時區,並將`LocalDate`轉換為0點整的`LocalDateTime`。接着,通過`atZone()`將其轉換為`ZonedDateTime`類型。然後,利用`toInstant()`將`ZonedDateTime`轉換為`Instant`類型,並使用`toEpochMilli()`獲取時間戳(毫秒數)。最後,我們除以1000將毫秒數轉換為秒數,得到我們想要的時間戳。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284808.html