With Java 8 Oracle introduced new Date and Time APIs which address the shortcomings of the existing java.util.Date and java.util.Calendar.
In this article we will take a look at the Java 8 Date and Time API with few examples of the new LocalTime class introduced by Java 8.
Improvements to Existing Calendar and Date Classes
Thread Safety: The existing API was not designed with concurrency in mind. This meant developers had to come up with custom solutions to handle thread safety. The Java 8 Date/Time API ensures thread safety by making all the new classes immutable.
Domain-driven design: The Java 8 date/time API has clear domain boundaries, and defines classes with specific use cases.
Support for non-standard Calendars: The Java 8 Date/Time API provides support for non-standard calendaring systems (Japanese calendar for example) without affecting the standard calendar implementation.
LocalTime
java.time.LocalTime
, like LocalDate, represents the Time, without the Date.
The following examples show show a few ways to use the LocalTime class
- Create an instance of LocalTime for current time: The instance representing current time can be obtained using the
now()
methodLocalTime localTime = LocalTime.now();
- Create an instance of LocaTime representing a specific time: Again, like LocalDate, there are two variations in which you can instantiate LocalTime to represent a specific time:
- The
LocalTime.of
method takes the distinct elements of the time as parameters (hours, minutes, seconds etc.). The following variants are availablestatic LocalTime of(int hour, int minute)
static LocalTime of(int hour, int minute, int second)
static LocalTime of(int hour, int minute, int second, int nanoOfSecond)
The following example shows the use of this methodLocalTime specificTime1 = LocalTime.of(21, 30); // 9:30 PM
System.out.println(specificTime1);
- The second method is
LocalTime.parse
which again has two variations- The default format is
HH:mm:ss.nnn
. The first variant of parse
, takes just a string representation of the date and attempts to parse the date by the default format. We can omit the trailing sections of the time, and still be able to parse the time.LocalTime specificTime2 = LocalTime.parse("21:30:33.435");
System.out.println("With LocalTime.parse, and default format : " + specificTime2);
LocalTime specificTime3 = LocalTime.parse("21:30:33");
System.out.println("With LocalTime.parse, and default format and remove nanoseconds : " + specificTime3);
- Custom Time Format: In this variation, we can use custom formatting using
DateTimeFormatter.ofPattern
. In the following example, we will use the parse method to parse a simple time format ("09:30 PM")DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("hh:mm a");
LocalTime specificTime4 = LocalTime.parse("09:30 PM", dateTimeFormat);
System.out.println("With LocalTime.parse, and custom format : " + specificTime4);
- Get parts of the time: LocalTime also provides a few utility method to extract part of the time and get more information about the date
System.out.println("Hour of the day : " + localTime.getHour());
System.out.println("Minute of the hour : " + localTime.getMinute());
- Add or Subtract with LocalTime: LocalTime class provides utility methods to add or subtract hours/minutes/seconds (represented by
java.time.temporal.TemporalUnit
interface). The following examples illustrate the use of these operation on LocalTime.//Subtract Hours
System.out.println("3 hours before now is : " + localTime.minus(3, ChronoUnit.HOURS));
//Subtract Minutes
System.out.println("3 minutes before now is : " + localTime.minus(3, ChronoUnit.MINUTES));
//Add Hours
System.out.println("3 hours after now is : " + localTime.plus(3, ChronoUnit.HOURS));
//Add Minutes
System.out.println("3 minutes after now is : " + localTime.plus(3, ChronoUnit.MINUTES));
- Compare two LocalTimes: The
isBefore
and isAfter
offer a way to compare two LocalTime objectsSystem.out.println("Is the time after 11:26? " + localTime.isAfter(LocalTime.parse("11:26")));
System.out.println("Is the time before 11:30? " + localTime.isBefore(LocalTime.parse("11:30")));
- Time between two LocalTimes: The
until()
method provides a way to calculate the number of hours/minutes etc between two LocalTimes. This method takes in the end time and TemporalUnit as a parameter, and can be used to calculate the number hours, minutes etc. between the start time and end time.System.out.println("Number of hours from now to 11:30: " + localTime.until(LocalTime.parse("11:30"), ChronoUnit.HOURS));
System.out.println("Number of minutes from now to 11:30: " + localTime.until(LocalTime.parse("11:30"), ChronoUnit.MINUTES));
Îmi place foarte mult. Vă mulțumesc pentru că mi-ați împărtășit. Întotdeauna caut astfel de reciclări. În cele din urmă, nici nu știi că a fost un palet de transport pentru a începe cu!
ReplyDelete