-->
Skip to main content

Convert between LocalDateTime to ZonedDateTime in Java [2021]

Convert between LocalDateTime to ZonedDateTime in Java [2021] 

To Convert LocalDateTime to ZonedDateTime we must add ZoneId with LocalDateTime as ZonedDateTime has ZoneId added with the DateTime.

LocalDateTime to ZonedDateTime conversion can be done using LocalDateTime.atZone(ZoneId zone) method on localdatetime instance.

Convert LocalDateTime to ZonedDateTime

Convert LocalDateTime to ZonedDateTime

Example 1: LocalDateTime to ZonedDateTime

In this example, we are going to convert LocalDateTime instance created using LocalDateTime.now() method to ZonedDateTime instance using ZonedDateTime.atZone() with system default zone.
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 public class LocalDateTimeToZonedDateTime {
   public static void main(String[] args) {

     LocalDateTime localdatetime = LocalDateTime.now();
     System.out.println(localdatetime);

     // default ZoneId.
     ZonedDateTime zonedDateTime =
       localdatetime.atZone(ZoneId.systemDefault());
     System.out.println(zonedDateTime);
   }
 }

Output:

2020-07-21T15:34:55.560
2020-07-21T15:34:55.560+05:30[Asia/Calcutta]

Example 2: LocalDateTime to ZonedDateTime UTC

In this example, we are going to convert LocalDateTime instance created using LocalDateTime.now() method to ZonedDateTime instance using ZonedDateTime.atZone() with ZoneId instance defined as UTC timezone.
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 public class LocalDateTimeToZonedDateTimeUTC {
   public static void main(String[] args) {

     LocalDateTime localdatetime = LocalDateTime.now();
     System.out.println(localdatetime);

     // localdatetime to zoneddatetime utc
     ZonedDateTime zonedDateTimeUTC =
         localdatetime.atZone(ZoneId.of("UTC"));
     System.out.println(zonedDateTimeUTC);
   }
 }

Output:

2020-07-21T15:34:55.560
2020-07-21T15:34:55.560Z[UTC]

Example 3: LocalDateTime to ZonedDateTime Change Timezone

In this example, we are going to convert LocalDateTime to ZonedDateTime instance and change the timezone of ZonedDateTime instance.

First, we created ZonedDateTime instance from localdatetime with timezone Asia/Calcutta then we are changing the timezone of existing zoneddatetime with timezone US/Eastern with help of withZoneSameInstant(ZoneId zone) method.

 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 public class LocalDateTimeToZonedDateTimeChangeTimezone {
   public static void main(String[] args) {

     LocalDateTime localdatetime = LocalDateTime.now();
     System.out.println(localdatetime);

     //from localdatetime to zoneddatetime with zoneId passed.
     ZonedDateTime asiacalcutta =
         localdatetime.atZone(ZoneId.of("Asia/Calcutta"));
     System.out.println(asiacalcutta);

     ZonedDateTime useastern =
         asiacalcutta.withZoneSameInstant(ZoneId.of("US/Eastern"));
     System.out.println(useastern);
   }
 }

Output:

2020-07-21T15:34:55.560
2020-07-21T15:34:55.560+05:30[Asia/Calcutta]
2020-07-21T06:04:55.560-04:00[US/Eastern]

Example 4: String to ZonedDateTime

In this example, we are going to convert string format zoneddatetime to ZonedDateTime instance using the ZonedDateTime parse method.
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 public class StringToZonedDateTime {
   public static void main(String[] args) {
     ZonedDateTime stringtozonedDateTime =
         ZonedDateTime.parse("2020-07-21T14:57:46.978+05:30[Asia/Calcutta]");
     System.out.println(stringtozonedDateTime);
   }
 }

Output:

2020-07-21T14:57:46.978+05:30[Asia/Calcutta]

Convert ZonedDateTime to LocalDateTime

Convert ZonedDateTime to LocalDateTime

Example 1: ZonedDateTime to LocalDateTime

In this example, we are going to convert ZonedDateTime to LocalDateTime instance using toLocalDateTime() method of ZonedDateTime.
 import java.time.LocalDateTime;
 import java.time.ZonedDateTime;

 public class ZonedDateTimetoLocalDateTime {
   public static void main(String[] args) {
     //Created ZonedDateTime with default zone
     ZonedDateTime zonedDateTime = ZonedDateTime.now();
     System.out.println(zonedDateTime);

     // from zoneddatetime to localdatetime
     LocalDateTime localdatetime = zonedDateTime.toLocalDateTime();
     System.out.println(localdatetime);
   }
 }

Output:

2020-07-21T15:51:01.236+05:30[Asia/Calcutta]
2020-07-21T15:51:01.236

Conclusion:

In this tutorial, we have covered how we can convert 
  • localdatetime to zoneddatetime
  • localdatetime to zoneddatetime with UTC timezone 
  • zoneddatetime with different timezone after changing the existing timezone
  • string formatted localdatetime to zoneddatetime
  • zoneddatetime to localdatetime
Thanks for reading this tutorial so far. If you like this tutorial then please share it with your friends and colleagues. If you have any questions, doubts, suggestions, or feedback then please drop a comment and I'll try to answer your question.

Happy Learning!!!

References: 

Comments