- Java Convert LocalTime to Calendar
- How to convert LocalTime to Calendar
- Java Convert LocalDate to Calendar
- How to convert LocalDate to Calendar in Java
- Java — Converting LocalTime, LocalDate and LocalDateTime to java.util.Calendar and java.util.Date
- How do I convert between old Date and Calendar object with the new Java 8 Date Time?
Java Convert LocalTime to Calendar
In this Java core tutorial we learn how to convert a java.time.LocalTime object to a java.util.Calendar in Java programming language.
How to convert LocalTime to Calendar
In order to convert a LocalTime object to a Calendar object we can follow the steps below.
- Combine LocalTime with current system date as a LocalDate object to create a new LocalDateTime object.
- Combine LocalDateTime object with system default time zone to create a new Instant object.
- From an Instant we can create new Date object using Date.from() method.
- Set Date object to the Calendar to create Calendar object from above Date.
The following Java code to show how to implement the steps above in Java program.
import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; public class ConvertLocalTimeToCalendarExample1 public static void main(String. args) LocalTime localTime = LocalTime.of(10, 20, 30); LocalDateTime localDateTime = localTime.atDate(LocalDate.now()); Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); Date date = Date.from(instant); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("LocalTime: " + localTime); System.out.println("Calendar Hour: " + calendar.get(Calendar.HOUR)); System.out.println("Calendar Minute: " + calendar.get(Calendar.MINUTE)); System.out.println("Calendar Second: " + calendar.get(Calendar.SECOND)); > >
LocalTime: 10:20:30 Calendar Hour: 10 Calendar Minute: 20 Calendar Second: 30
Below is the shorter Java code version which return the same result.
import java.time.LocalDate; import java.time.LocalTime; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; public class ConvertLocalTimeToCalendarExample2 public static void main(String. args) LocalTime localTime = LocalTime.of(10, 20, 30); Date date = Date.from(localTime.atDate(LocalDate.now()).atZone(ZoneId.systemDefault()).toInstant()); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("LocalTime: " + localTime); System.out.println("Calendar Hour: " + calendar.get(Calendar.HOUR)); System.out.println("Calendar Minute: " + calendar.get(Calendar.MINUTE)); System.out.println("Calendar Second: " + calendar.get(Calendar.SECOND)); > >
LocalTime: 10:20:30 Calendar Hour: 10 Calendar Minute: 20 Calendar Second: 30
Java Convert LocalDate to Calendar
In this Java core tutorial we learn how to convert java.time.LocalDate object to java.util.Calendar object in Java programming language.
How to convert LocalDate to Calendar in Java
In Java to convert a LocalDate object to Calendar we can follow the steps below
- First step, Convert LocalDate to a ZonedDateTime
- Second step, Convert ZonedDateTime to Instant object
- Third step, Convert Instant to Date object
- Then create new instance of Calendar and use Calendar.setTime() method to set Date object to Calendar.
The following Java example to show how to convert LocalDate to Calendar as above step by step.
import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Calendar; import java.util.Date; public class ConvertLocalDateToCalendarExample1 public static void main(String. args) LocalDate localDate = LocalDate.of(2022, 7, 11); ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault()); Instant instant = zonedDateTime.toInstant(); Date date = Date.from(instant); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("LocalDate: " + localDate); System.out.println("Calendar year: " + calendar.get(Calendar.YEAR)); System.out.println("Calendar month (0 to 11): " + calendar.get(Calendar.MONTH));// Calendar mont from 0 to 11 System.out.println("Calendar day of month: " + calendar.get(Calendar.DAY_OF_MONTH)); > >
LocalDate: 2022-07-11 Calendar year: 2022 Calendar month (0 to 11): 6 Calendar day of month: 11
Or we can use shorter version as below.
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Calendar calendar = Calendar.getInstance(); calendar.setTime(date);
import java.time.Instant; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Calendar; import java.util.Date; public class ConvertLocalDateToCalendarExample2 public static void main(String. args) LocalDate localDate = LocalDate.of(2022, 7, 11); Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("LocalDate: " + localDate); System.out.println("Calendar year: " + calendar.get(Calendar.YEAR)); System.out.println("Calendar month (0 to 11): " + calendar.get(Calendar.MONTH));// Calendar mont from 0 to 11 System.out.println("Calendar day of month: " + calendar.get(Calendar.DAY_OF_MONTH)); > >
LocalDate: 2022-07-11 Calendar year: 2022 Calendar month (0 to 11): 6 Calendar day of month: 11
Java — Converting LocalTime, LocalDate and LocalDateTime to java.util.Calendar and java.util.Date
Following utility methods convert Java 8 LocalTime , LocalDate and LocalDateTime to java.util.Calendar and java.util.Date .
package com.logicbig.example; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.Calendar; import java.util.Date; public class LocalDateTimeToDate < public static Date localTimeToDate(LocalTime localTime) < Calendar calendar = Calendar.getInstance(); calendar.clear(); //assuming year/month/date information is not important calendar.set(0, 0, 0, localTime.getHour(), localTime.getMinute(), localTime.getSecond()); return calendar.getTime(); >public static Date localDateToDate(LocalDate localDate) < Calendar calendar = Calendar.getInstance(); calendar.clear(); //assuming start of day calendar.set(localDate.getYear(), localDate.getMonthValue()-1, localDate.getDayOfMonth()); return calendar.getTime(); >public static Date localDateTimeToDate(LocalDateTime localDateTime) < Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(localDateTime.getYear(), localDateTime.getMonthValue()-1, localDateTime.getDayOfMonth(), localDateTime.getHour(), localDateTime.getMinute(), localDateTime.getSecond()); return calendar.getTime(); >public static void main(String[] args) < Date date = localTimeToDate(LocalTime.now()); System.out.println(date); date = localDateToDate(LocalDate.now()); System.out.println(date); date = localDateTimeToDate(LocalDateTime.now()); System.out.println(date); >>
Wed Dec 31 13:18:27 CST 2
Mon Jun 11 00:00:00 CDT 2018
Mon Jun 11 13:18:27 CDT 2018
Above methods can be useful for simple cases. Use following methods if you want the conversion to be more accurate and want to target a specific time zone.
package com.logicbig.example; import java.time.*; import java.util.Date; public class LocalDateTimeToDate2 < public static Date localTimeToDate(LocalTime localTime, int year, int month, int day, ZoneOffset zoneOffset) < LocalDateTime dateTime = localTime.atDate(LocalDate.of(year, month, day)); return localDateTimeToDate(dateTime, zoneOffset); >public static Date localTimeToDate(LocalTime localTime, int year, int month, int day, ZoneId zoneId) < LocalDateTime dateTime = localTime.atDate(LocalDate.of(year, month, day)); return localDateTimeToDate(dateTime, zoneId); >public static Date localDateToDate(LocalDate localDate, ZoneOffset zoneOffset) < LocalDateTime dateTime = localDate.atStartOfDay();//assuming start of day return localDateTimeToDate(dateTime, zoneOffset); >public static Date localDateToDate(LocalDate localDate, ZoneId zoneId) < LocalDateTime dateTime = localDate.atStartOfDay();//assuming start of day return localDateTimeToDate(dateTime, zoneId); >public static Date localDateTimeToDate(LocalDateTime localDateTime, ZoneId zoneId) < ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId); return zoneDateTimeToDate(zonedDateTime); >public static Date localDateTimeToDate(LocalDateTime localDateTime, ZoneOffset zoneOffset) < OffsetDateTime offsetDateTime = localDateTime.atOffset(zoneOffset); return offsetDateTimeToDate(offsetDateTime); >public static Date offsetDateTimeToDate(OffsetDateTime offsetDateTime) < return Date.from(offsetDateTime.toInstant()); >public static Date zoneDateTimeToDate(ZonedDateTime zonedDateTime) < return Date.from(zonedDateTime.toInstant()); >public static void main(String[] args) < System.out.println("-- using ZoneOffset --"); ZoneOffset zoneOffset = ZoneOffset.from(OffsetDateTime.now()); System.out.println("ZoneOffset: " + zoneOffset); Date date = localTimeToDate(LocalTime.now(), 2000, 1, 1, zoneOffset); System.out.println(date); date = localDateToDate(LocalDate.now(), zoneOffset); System.out.println(date); date = localDateTimeToDate(LocalDateTime.now(), zoneOffset); System.out.println(date); date = offsetDateTimeToDate(OffsetDateTime.now()); System.out.println(date); System.out.println("-- using ZoneId --"); ZoneId zoneId = ZoneId.from(ZonedDateTime.now()); System.out.println("ZoneId: " + zoneId); date = localTimeToDate(LocalTime.now(), 2000, 1, 1, zoneOffset); System.out.println(date); date = localDateToDate(LocalDate.now(), zoneOffset); System.out.println(date); date = localDateTimeToDate(LocalDateTime.now(), zoneOffset); System.out.println(date); date = zoneDateTimeToDate(ZonedDateTime.now()); System.out.println(date); >>
-- using ZoneOffset --
ZoneOffset: -05:00
Sat Jan 01 12:18:33 CST 2000
Mon Jun 11 00:00:00 CDT 2018
Mon Jun 11 13:18:33 CDT 2018
Mon Jun 11 13:18:33 CDT 2018
-- using ZoneId --
ZoneId: America/Chicago
Sat Jan 01 12:18:33 CST 2000
Mon Jun 11 00:00:00 CDT 2018
Mon Jun 11 13:18:33 CDT 2018
Mon Jun 11 13:18:33 CDT 2018
To convert java.util.Date to java.util.Calendar and vice-versa use following methods:
package com.logicbig.example; import java.util.Calendar; import java.util.Date; public class DateToCalendar < public Calendar dateToCalendar(Date date) < Calendar c = Calendar.getInstance(); c.setTime(date); return c; >public static Date calendarToDate(Calendar calendar) < return calendar.getTime(); >>
How do I convert between old Date and Calendar object with the new Java 8 Date Time?
In this example we will learn how to convert the old java.util.Date and java.util.Calendar objects to the new Date Time introduced in Java 8. The first method in the code snippet below dateToNewDate() show conversion of java.util.Date while the calendarToNewDate() show the conversion of java.util.Calendar .
The java.util.Date and java.util.Calendar provide a toInstant() method to convert the objects to the new Date Time API class of the java.time.Instant . To convert the old date into the Java 8 LocalDate , LocalTime and LocalDateTime we first can create an instance of ZonedDateTime using the atZone() method of the Instant class.
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
From an instance of ZonedDateTime class we can call the toLocalDate() , toLocalTime() and toLocalDateTime() to get instance of LocalDate , LocalTime and LocalDateTime .
To convert back from the new Java 8 date to the old java.util.Date we can use the Date.from() static factory method and passing and instance of java.time.Instant that we can obtain by calling the following code.
Instant instant1 = dateTime.atZone(ZoneId.systemDefault()).toInstant(); Date now1 = Date.from(instant1);
Here are the complete code snippet to convert java.util.Date to the new Java 8 Date Time.
private static void dateToNewDate() < Date now = new Date(); Instant instant = now.toInstant(); ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault()); LocalDate date = zonedDateTime.toLocalDate(); LocalTime time = zonedDateTime.toLocalTime(); LocalDateTime dateTime = zonedDateTime.toLocalDateTime(); Instant instant1 = dateTime.atZone(ZoneId.systemDefault()).toInstant(); Date now1 = Date.from(instant1); System.out.println("java.util.Date = " + now); System.out.println("java.time.LocalDate = " + date); System.out.println("java.time.LocalTime = " + time); System.out.println("java.time.LocalDateTime = " + dateTime); System.out.println("java.util.Date language-java">private static void calendarToNewDate() < Calendar now = Calendar.getInstance(); LocalDateTime dateTime = LocalDateTime.ofInstant(now.toInstant(), ZoneId.systemDefault()); LocalDate date = dateTime.toLocalDate(); LocalTime time = dateTime.toLocalTime(); ZonedDateTime zonedDateTime = dateTime.atZone(ZoneId.systemDefault()); Calendar now1 = GregorianCalendar.from(zonedDateTime); System.out.println("java.util.Calendar = " + now); System.out.println("java.time.LocalDateTime = " + dateTime); System.out.println("java.time.LocalDate = " + date); System.out.println("java.time.LocalTime = " + time); System.out.println("java.util.Calendar language-java">package org.kodejava.datetime; import java.time.*; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class LegacyDateCalendarToNewDateExample < public static void main(String[] args) < dateToNewDate(); calendarToNewDate(); >>
Here are the result of the code snippet above. The first group is conversion the java.util.Date to the new Date Time API. The second group is conversion from the java.util.Calendar to the new Date Time API.
java.util.Date = Tue Nov 16 08:44:51 CST 2021 java.time.LocalDate = 2021-11-16 java.time.LocalTime = 08:44:51.031 java.time.LocalDateTime = 2021-11-16T08:44:51.031 java.util.Date = Tue Nov 16 08:44:51 CST 2021 java.util.Calendar = java.util.GregorianCalendar[time=1637023491089,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=320,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=44,SECOND=51,MILLISECOND=89,ZONE_OFFSET=28800000,DST_OFFSET=0] java.time.LocalDateTime = 2021-11-16T08:44:51.089 java.time.LocalDate = 2021-11-16 java.time.LocalTime = 08:44:51.089 java.util.Calendar = java.util.GregorianCalendar[time=1637023491089,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2021,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=16,DAY_OF_YEAR=320,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=8,HOUR_OF_DAY=8,MINUTE=44,SECOND=51,MILLISECOND=89,ZONE_OFFSET=28800000,DST_OFFSET=0]
A programmer, recreational runner and diver, live in the island of Bali, Indonesia. Programming in Java, Spring, Hibernate / JPA. You can support me working on this project, buy me a cup of coffee ☕ every little bit helps, thank you 🙏