KayV
KayV

Reputation: 13845

How to customize the TemporalAdjusters in Java 8?

I am working with Java 8 Date and Time utility. I am using the TemporalAdjuster interface and the implementations found in TemporalAdjusters to manipulate the calculations for a specific day or date.

My requirement is to calculate the day after 3 month and 2 days. For example, today is 6th of Decemeber (i.e 2016-12-06 in YYYY-MM-DD) and after 3 months and 2 days, the date would be 8th of March, 2017 (i.e. 2017-03-08 in YYYY-MM-DD).

I tried two ways of doing this using the Date and Time utility as follows:

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

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

Both of them returns the date as 3rd of March, 2017 (i.e. 2017-03-03) as follows:

dayAfter3MonthsAnd2Days = 2017-03-03

Is there any way i can customize the TemporalAdjusters and get the desired output? Or any other alternate to achieve the goal?

Upvotes: 1

Views: 1163

Answers (1)

KayV
KayV

Reputation: 13845

I found out that i can simply use the following:

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

Alongwith that, i can also use the custom TemporalAdjuster which uses the above same process to do manipulations as follows:

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

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

Although the previous way is simpler, but we can use more custom proceedings using ofDateAdjuster method of TemporalAdjuster.

Upvotes: 2

Related Questions