![](/img/trans.png)
[英]How can I convert Java ZonedDateTime to OffsetDateTime with default time zone offset?
[英]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 未定义
ZonedDateTime
和LocalDateTime
是不同的。
如果你需要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();
无论您想要ZonedDateTime
、 LocalDateTime
、 OffsetDateTime
还是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.