我在jdk 8中遇到了不是LocalDate成员的Instant错误。
LocalDate.ofInstant(Instant.now(), zone).atStartOfDay(ZoneId.of("Z")).toEpochSecond
在jdk11中运行正常。如何在jdk8中以最体面的方式做到这一点。
答案 0 :(得分:0)
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();