如何在5年前获得

时间:2016-01-15 14:49:11

标签: java-8

我是Java 8的新手,我想要在五年之前获得,这是我的代码:

Instant fiveYearsBefore = Instant.now().plus(-5,
                    ChronoUnit.YEARS);

但是我收到以下错误:

java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Years

任何人都可以帮我怎么做?

4 个答案:

答案 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);