Pages

Thursday, December 3, 2020

Java LocalDate adjustInto() Examples

1. Overview

In this article, We'll learn how to use LocalDate class adjustInto() method in java 8.

This adjustInto(Temporal temporal) method adjusts the value of temporal object as same as the this or current object.

Let us take a simple example, We have two objects of LocalDate class objects localDate1 and localDate2. If we call the adjustInto() method like this localDate1.adjustInto(localDate2) then localDate2 value will be modified to as same as localDate1. After this line execution, both of these objects would be having the same values.

Read more about LocalDate Class

Java LocalDate adjustInto() Examples


2. LocalDate adjustInto() syntax

adjustInto() method modifies the values of passed date object to the called object. In other words it creates a copy of same this object.

Syntax:

Temporal adjustInto(Temporal temporal)


adjustInto() method returns the modified new object but the passed object can not be changed because LocalDate is immutable class.

Temporal is an interface and is implemented by all these classes HijrahDate, Instant, JapaneseDate, LocalDate, LocalDateTime, LocalTime, MinguoDate, OffsetDateTime, OffsetTime, ThaiBuddhistDate, Year, YearMonth, ZonedDateTime

So that means we can pass any date class object to this method.


3. Java 8 LocalDate adjustInto() Examples

In the below example, we have taken simple two LocalDate objects such as localDate1 and localDate2.

Next, called localDate2.adjustInfo(localDate2) which returns the new object as same as localDate2.

We need to typecast to right object otherwise will get the compile time error.

In our case object is LocalDate and type casted to correct class.

package com.javaprogramto.java8.dates.localdate;

import java.time.LocalDate;

/**
 * 
 * LocalDate.adjustInfo() example in java 8
 * 
 * @author javaprogramto.com
 *
 */
public class LocalDateAdjustIntoExample {

	public static void main(String[] args) {

		LocalDate localDate1 = LocalDate.now();
		LocalDate localDate2 = LocalDate.of(2020, 01, 02);

		System.out.println("Before");
		System.out.println("LocalDate 1 : " + localDate1);
		System.out.println("LocalDate 2 : " + localDate2);

		localDate1 = (LocalDate) localDate2.adjustInto(localDate1);

		System.out.println("After");
		System.out.println("LocalDate 1 : " + localDate1);
		System.out.println("LocalDate 2 : " + localDate2);
	}
}

Output:

Before
LocalDate 1 : 2020-12-03
LocalDate 2 : 2020-01-02
After
LocalDate 1 : 2020-01-02
LocalDate 2 : 2020-01-02

From the output, we can observe that localDate1 value is changed to localDate2.


4. Another Example To adjustInto() with ZonedDateTime Examples

In the below example, created three objects using ZonedDateTime, LocalDateTime and LocalDateTime.

Now, we will adjust first two dates values using adjustInto() method.


package com.javaprogramto.java8.dates.localdate;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZonedDateTime;

/**
 * 
 * LocalDate.adjustInfo() example in java 8 with different Temporal types.
 * 
 * @author javaprogramto.com
 *
 */
public class LocalDateAdjustIntoExample {

	public static void main(String[] args) {

		// created 3 datetime objects using different temporal objects such as ZonedDateTime, LocalDateTime
		ZonedDateTime date1 = ZonedDateTime.now();
		LocalDateTime date2 = LocalDateTime.now();
		LocalDateTime date3 = LocalDateTime.of(LocalDate.now(), LocalTime.now());

		System.out.println("Before");
		System.out.println("date1 : " + date1);
		System.out.println("date2 : " + date2);
		System.out.println("date3 : " + date3);

		// adjusting the date1 and date2 values using adjustInto() method.
		date1 = (ZonedDateTime) date3.adjustInto(date1);
		date2 = (LocalDateTime) date3.adjustInto(date2);

		System.out.println("After");
		System.out.println("date1 : " + date1);
		System.out.println("date2 : " + date2);
		System.out.println("date3 : " + date3);
	}
}

Output:

Before
date1 : 2020-12-03T23:42:00.360295+05:30[Asia/Kolkata]
date2 : 2020-12-03T23:42:00.360445
date3 : 2020-12-03T23:42:00.360565
After
date1 : 2020-12-03T23:42:00.360565+05:30[Asia/Kolkata]
date2 : 2020-12-03T23:42:00.360565
date3 : 2020-12-03T23:42:00.360565

Observe the output after date1 and date2 adjustment and those two dates milliseconds are changed to date3 milliseconds. Hence, all three dates are having the same values.

adjustInto() method can be also used to copy the current date object into another object (creating the duplicate date and time objects).

if the method not invoked with the proper date objects then it may throw the following runtime exceptions.

DateTimeException - if unable to make the adjustment

ArithmeticException - if numeric overflow occurs

5. Conclusion

In this article, we've seen how to use the LocalDate.adjustInto() method with examples in java 8 api.

GitHub

Convert Calendar to LocalDate in java 8

No comments:

Post a Comment

Please do not add any spam links in the comments section.