时间long 转换 LocalDateTime
时间: 2024-08-16 18:07:49 浏览: 53
在Java中,将`long`类型的Unix时间戳(以秒为单位)转换为`LocalDateTime`,可以使用`Instant`类结合`EpochSecond`和`ZonedDateTime`。这里是一个示例:
```java
import java.time.*;
public LocalDateTime longToLocalDateTime(long timestampInSeconds) {
// 创建一个代表Unix时间戳的Instant对象
Instant instant = Instant.ofEpochSecond(timestampInSeconds);
// 使用ZoneId.systemDefault()获取本地时区,然后将Instant转换为LocalDateTime
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
return localDateTime;
}
```
在这个例子中,你需要传入的是秒级别的Unix时间戳,它包含了自1970年1月1日(UTC)以来的总秒数。
如果你的`long`值是以毫秒为单位的,那么你应该除以1000,再进行上述操作:
```java
localDateTime = instant.plusMillis((timestampInMilliseconds - timestampInSeconds * 1000) / 1000).atZone(ZoneId.systemDefault()).toLocalDateTime();
```
阅读全文