这里的目标是将LocalDateTime转换为epoch秒来回。
假设我将LocalDateTime定义为:
LocalDateTime now = LocalDateTime.now();
我希望将它转换为亚洲/加尔各答时区的第二纪元,我可以这样做:
long epochSecondNow = now.atZone(ZoneId.of("Asia/Kolkata")).toEpochSecond();
现在,我想生成现在的'再次来自epochSecondNow:
LocalDateTime类有一个方法'
ofEpochSecond(long epochSecond,long nanoOfSecond, ZoneOffset zoneOffset)
'其中以纪元秒,纳秒和ZoneOffset为参数。
我无法使用" Asia / Kolkata"创建ZoneOffset。我应该如何为我的区域制作ZoneOffset对象,以便使用' ofEpochSecond'方法。 还有其他办法吗?
谢谢!
答案 0 :(得分:3)
尝试使用Instant.ofEpochSecond
Instant instant = Instant.ofEpochSecond(epochSecondNow);
ZonedDateTime atZone = instant.atZone(ZoneId.of("Asia/Kolkata"));
LocalDateTime localDateTime = atZone.toLocalDateTime();
如果要使用系统时区,可以使用ZoneId.systemDefault()
答案 1 :(得分:0)
好吧,我只是通过以下方式完成此操作,方法是通过将偏移值作为String传递来获取ZoneOffset:
LocalDateTime nowFromEpochSecond = LocalDateTime.ofEpochSecond(epochSecondNow,0,ZoneOffset.of("+05:30"));
我希望有一种更简洁的方法,而不是硬编码偏移和区域ID。