📅  最后修改于: 2023-12-03 15:09:31.889000             🧑  作者: Mango
在 Java 中,我们有时需要将 long 值转换成 LocalDateTime。 LocalDateTime 是 Java 8 引入的一种日期时间类型,可以用来表示日期和时间,不像 Date 和 Calendar 一样不可变,也不需要考虑时区。
在 Java 8 中,我们可以使用 Instant
类和 ZoneId
类将一个 long 值转换为 LocalDateTime
。Instant
是表示时间线上的某个时间点的类。我们可以从 Epoch(1970 年 1 月 1 日,UTC)开始计算,使用指定的时区将 Instant
转换为在地方时区中具有相同日期和时间的 LocalDateTime
:
long timestamp = 1629927392000L;
Instant instant = Instant.ofEpochMilli(timestamp);
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
在上面的代码中,我们使用 Instant.ofEpochMilli
方法将 long 值转换成 Instant
类型。然后,我们使用 Instant
对象的 atZone
方法将 Instant
对象转换为指定时区中的 ZonedDateTime
对象。最后,使用 ZonedDateTime
对象的 toLocalDateTime
方法将其转换为 LocalDateTime
类型。
我们还可以使用 DateTimeFormatter
类将 long 值转换为 LocalDateTime
。DateTimeFormatter
提供了一种将字符串格式化为日期和时间的方法。我们可以使用 DateTimeFormatter
中的 parse
方法来将 long 值转换为 LocalDateTime
,如下所示:
long timestamp = 1629927392000L;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
LocalDateTime localDateTime = LocalDateTime.parse(formatter.format(timestamp), formatter);
在上面的代码中,我们使用 DateTimeFormatter
对象的 ofPattern
方法创建日期时间格式化器。然后,我们使用格式化器的 format
方法将 long 值转换成格式化后的字符串。最后,我们使用 DateTimeFormatter
对象的 parse
方法将字符串转换成 LocalDateTime
对象。
在本文中,我们介绍了两种将 long 值转换为 LocalDateTime
类型的方法。我们可以使用 Instant
和 ZoneId
类来完成这项工作,也可以使用 DateTimeFormatter
实现相同的效果。这些方法可以帮助我们在 Java 中轻松地将 long 值转换成 LocalDateTime
。