ZonedDateTime和unix时间互转
时间: 2024-03-23 18:43:48 浏览: 45
将ZonedDateTime转换为Unix时间戳可以使用以下Java代码:
```java
ZonedDateTime zonedDateTime = ZonedDateTime.now();
long unixTimestamp = zonedDateTime.toInstant().getEpochSecond();
```
将Unix时间戳转换为ZonedDateTime可以使用以下Java代码:
```java
long unixTimestamp = 1621931559;
ZonedDateTime zonedDateTime = Instant.ofEpochSecond(unixTimestamp).atZone(ZoneId.systemDefault());
```
其中,`1621931559`是Unix时间戳的示例值,可以替换为需要转换的时间戳。`ZoneId.systemDefault()`表示使用系统默认的时区,也可以替换为需要的时区。
相关问题
ZonedDateTime 转date
要将 ZonedDateTime 转换为 Date,可以使用 `toInstant()` 方法将其转换为 Instant,然后再使用 `Date.from()` 方法将 Instant 转换为 Date。以下是示例代码:
```java
ZonedDateTime zonedDateTime = ZonedDateTime.now();
Instant instant = zonedDateTime.toInstant();
Date date = Date.from(instant);
```
在这个示例中,`ZonedDateTime.now()` 获取当前的 ZonedDateTime 对象。然后,`toInstant()` 方法将其转换为 Instant。最后,`Date.from()` 方法将 Instant 转换为 Date。
请注意,Date 类在Java 8 中已经过时,建议使用新的日期和时间 API(java.time 包中的类)来进行日期和时间操作。如果可能的话,尽量避免使用 Date 类。
ZonedDateTime转LocalDateTime
要将 ZonedDateTime 转换为 LocalDateTime,可以使用 `toLocalDateTime` 方法。以下是一个示例代码:
```java
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
public class Main {
public static void main(String[] args) {
ZonedDateTime zonedDateTime = ZonedDateTime.now();
LocalDateTime localDateTime = zonedDateTime.toLocalDateTime();
System.out.println("ZonedDateTime: " + zonedDateTime);
System.out.println("LocalDateTime: " + localDateTime);
}
}
```
这个例子中,我们首先创建了一个当前的 ZonedDateTime 对象,然后使用 `toLocalDateTime` 方法将其转换为 LocalDateTime 对象。最后,我们将两个对象的值打印出来。
请注意,由于 ZonedDateTime 包含了时区信息,因此在转换为 LocalDateTime 时会丢失时区信息。转换后的 LocalDateTime 对象仅包含日期和时间信息。