我是Java 8的新手,我想要在五年之前获得,这是我的代码:
Instant fiveYearsBefore = Instant.now().plus(-5,
ChronoUnit.YEARS);
但是我收到以下错误:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Years
任何人都可以帮我怎么做?
答案 0 :(得分:29)
ZonedDateTime.now().minusYears(5).toInstant()
这将使用您的默认时区来计算时间。如果您想要另一个,请在now()
中指定。例如:
ZonedDateTime.now(ZoneOffset.UTC).minusYears(5).toInstant()
答案 1 :(得分:10)
根据Javadoc,Instant只接受从纳米到天Instant.plus(long amountToAdd, TemporalUnit unit);的时间单位
您可以使用LocalDateTime。您以相同的方式使用它,但它将支持YEARS级别的操作。
答案 2 :(得分:6)
Instant不支持添加或减去YEARS。
如果您只需要没有时间的日期,则可以使用此LocalDate:
LocalDate date = LocalDate.now();
date = date.plus(-5, ChronoUnit.YEARS);
否则您可以使用LocalDateTime。
答案 3 :(得分:-4)
如果您如此倾向于不需要日期时间转换。
Instant.now().minus(Period.ofYears(5).getDays(),ChronoUnit.DAYS);