繁体   English   中英

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

[英]How can I convert a time in milliseconds to ZonedDateTime

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

我有以下代码

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

线

LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);

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

ZonedDateTimeLocalDateTime不同的

如果你需要LocalDateTime ,你可以这样做:

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

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

//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();

无论您想要ZonedDateTimeLocalDateTimeOffsetDateTime还是LocalDate ,语法实际上都是相同的,并且都围绕着首先使用Instant.ofEpochMilli(m)将毫秒应用于Instant

long m = System.currentTimeMillis();

ZonedDateTime  zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
LocalDateTime  ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
OffsetDateTime odt = OffsetDateTime.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());
LocalDate      ld  = LocalDate.ofInstant(Instant.ofEpochMilli(m), ZoneId.systemDefault());

打印它们会产生这样的结果:

2018-08-21T12:47:11.991-04:00[America/New_York]
2018-08-21T12:47:11.991
2018-08-21T12:47:11.991-04:00
2018-08-21

打印Instant本身会产生:

2018-08-21T16:47:11.991Z

您不能在 Java 中创建扩展方法。 如果要为此定义一个单独的方法,请创建一个 Utility 类:

class DateUtils{

    public static ZonedDateTime millsToLocalDateTime(long m){
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = Instant.ofEpochSecond(m);
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zoneId);
        return zonedDateTime;
    }
}

来自您的其他班级电话

DateUtils.millsToLocalDateTime(89897987989L);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM