如何将以毫秒为单位的时间转换为 ZonedDateTime

2022-09-04 05:34:16

我有以毫秒为单位的时间,我需要将其转换为ZonedDateTime对象。

我有以下代码

long m = System.currentTimeMillis();
LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);

生产线

LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);

给我一个错误,说methed millsToLocalDateTime对于LocalDateTime类型未定义


答案 1

ZonedDateTime并且是不同的LocalDateTime

如果需要,可以按以下方式操作:LocalDateTime

long m = ...;
Instant instant = Instant.ofEpochMilli(m);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

答案 2

您可以从瞬间构造一个(这使用系统区域 ID):ZonedDateTime

//Instant is time-zone unaware, the below will convert to the given zone
ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(m), 
                                ZoneId.systemDefault());

如果您需要从中实例:LocalDateTime

//And this date-time will be "local" to the above zone
LocalDateTime ldt = zdt.toLocalDateTime();

推荐