Calculating the elapsed time since midnight (in seconds or milliseconds) is a common task in various applications. This Java Date-Time tutorial demonstrates how to calculate the time passed since the clock struck midnight.
1. Get Elapsed Time Since Midnight
To get the elapsed time since midnight, we capture the current time using LocalTime.now() and midnight time LocalTime.MIDNIGHT and then calculate the difference between them by subtraction.
LocalTime midnight = LocalTime.MIDNIGHT;
LocalTime currentTime = LocalTime.now();
long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);
The ChronoUnit supports different units of time (e.g. milliseconds) that we can utilize for obtaining the difference in other time units as well.
LocalTime midnight = LocalTime.MIDNIGHT;
LocalTime currentTime = LocalTime.now();
long millis = ChronoUnit.MILLIS.between(midnight, currentTime);
2. Get Elapsed Time Since Midnight in Specified Timezone
By default, LocalTime.now() returns the time in the system clock in the default/current timezone. If we wish to get the elapsed time in a specified time zone, we can pass the zone information as follows:
LocalTime currentTime = LocalTime.now(ZoneId.of("America/New_York"));
LocalTime midnight = LocalTime.MIDNIGHT;
long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);
Similarly, we can get the elapsed time since midnight in UTC as follows:
LocalTime currentTime = LocalTime.now(ZoneOffset.UTC);
LocalTime midnight = LocalTime.MIDNIGHT;
long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);
3. Using LocalDateTime or ZonedDateTime
If we have a LocalDateTime instance in the application, and we wish to utilize it then the process to get the elapsed time remains the same. We get the exact instance at midnight and then subtract the current time.
The following Java program utilizes the LocalDateTime class to obtain the elapsed time since midnight.
LocalDateTime currentTime = LocalDateTime.now();
LocalDateTime midnight = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);
Similarly, we can use the process for the ZonedDateTime class as well.
ZonedDateTime currentTime = ZonedDateTime.now();
ZonedDateTime midnight = ZonedDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT, ZoneId.systemDefault());
long seconds = ChronoUnit.SECONDS.between(midnight, currentTime);
4. Conclusion
In this Java tutorial, we learned the concept of elapsed time and used Java’s java.time package to calculate the time that has passed since midnight. We demonstrated to use of classes such as LocalTime, LocalDateTime, and ZonedDateTime in the Java programs.
Happy Learning !!
Comments