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