我在jdk 8中收到不是本地日期成员的Instant错误,
LocalDate.ofInstant(Instant.now(), zone).atStartOfDay(ZoneId.of("Z")).toEpochSecond
在jdk11中运行正常。如何在jdk8中以最体面的方式完成同样的操作。
LocalDate.ofInstant
方法是Java 9引入的。这是无论使用Java 8、9还是11都将使用的版本:
ZoneId zone = ZoneId.of("Asia/Gaza");
long epochSecond = LocalDate.now(zone).atStartOfDay(ZoneOffset.UTC).toEpochSecond();
System.out.println("epochSecond: " + epochSecond);
如果您填写相同的时区,它将得到与您的代码相同的结果。
如果需要从给定的Instant
进行转换,请在Java 8中执行:
Instant inst = Instant.now(); // Assign your Instant value here
long epochSecond = inst.atZone(zone)
.toLocalDate()
.atStartOfDay(ZoneOffset.UTC)
.toEpochSecond();