1

我正在使用 Java 8 日期和时间实用程序。我正在使用中的TemporalAdjuster接口和实现TemporalAdjusters来操作特定日期或日期的计算。

我的要求是计算3个月零2天后的一天。例如,今天是 12 月 6 日(即 YYYY-MM-DD 中的 2016-12-06),3 个月零 2 天后,日期将是 2017 年 3 月 8 日(即 YYYY-MM 中的 2017-03-08 -DD)。

我尝试了两种使用日期和时间实用程序执行此操作的方法,如下所示:

//First
LocalDate dayAfter3MonthsAnd2Days = LocalDate
    .now()
    .with(firstDayOfNextMonth()).plusMonths(2).plusDays(2);

//Second
LocalDate dayAfter3MonthsAnd2Days = LocalDate
    .now()
    .with(firstDayOfMonth()).plusMonths(3).plusDays(2);

它们都返回日期为 2017 年 3 月 3 日(即 2017-03-03),如下所示:

dayAfter3MonthsAnd2Days = 2017-03-03

有什么方法可以自定义 TemporalAdjusters 并获得所需的输出?或者任何其他替代方案来实现目标?

4

1 回答 1

2

我发现我可以简单地使用以下内容:

LocalDate dayAfter3MonthsAnd2DaysNew = LocalDate
                                            .now()
                                            .plusMonths(3)
                                            .plusDays(2);

除此之外,我还可以使用自定义的 TemporalAdjuster,它使用上述相同的过程进行如下操作:

TemporalAdjuster ta = TemporalAdjusters.ofDateAdjuster(
                                         (LocalDate d) -> d.plusMonths(3).plusDays(2));

LocalDate dayAfter3MonthsAnd2DaysCustom = LocalDate
                                                .now()
                                                .with(ta);

虽然前面的方式比较简单,但是我们可以使用更多的自定义程序,使用 TemporalAdjuster 的 ofDateAdjuster 方法。

于 2016-12-06T12:19:01.823 回答