如何自定义 Java 8 中的 TemporalAdjusters?

How to customize the TemporalAdjusters in Java 8?

我正在使用 Java 8 日期和时间实用程序。我正在使用 TemporalAdjuster interface and the implementations found in 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);

两者returns日期为2017年3月3日(即2017-03-03)如下:

dayAfter3MonthsAnd2Days = 2017-03-03

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

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

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方法来使用更多的自定义程序。