java.time.Duration
is another useful class in Java for dealing with time. It measures time in seconds and nanoseconds and is most suitable for smaller amounts of time, like “20 seconds” or “3 hours”, and not for larger units like “3 days” or “4 months”. Here’s a guide on how to use it:
1. Creating a Duration instance
You can create an instance of Duration
using one of its static factory methods that best suits your needs, such as ofSeconds()
, ofMinutes()
, ofHours()
, or ofMillis()
.
//create a duration of 60 seconds
Duration duration = Duration.ofSeconds(60);
//create a duration of 2 hours
Duration twoHours = Duration.ofHours(2);
2. Creating a Duration between two Instants
Duration
also provides a static method between()
that can be used to find the duration between two points in time.
Instant start = Instant.now();
// Do some time consuming task...
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
3. Retrieving the Duration
You can retrieve the number of days, hours, minutes, or seconds in a Duration
using methods like toDays()
, toHours()
, toMinutes()
, or getSeconds()
.
long hours = twoHours.toHours(); // returns 2
4. Adding and Subtracting from a Duration
Duration
can be added or subtracted from another using the plus()
and minus()
methods or the more specific plus / minus methods such as plusHours()
, minusMinutes()
, etc.
// Adding
Duration additionalDuration = duration.plusHours(4);
// Subtracting
Duration lessDuration = additionalDuration.minusMinutes(50);
5. Comparing Durations
The Duration
class provides compareTo()
, equals()
, negated()
, and abs()
methods for comparison:
Duration duration1 = Duration.ofHours(4);
Duration duration2 = Duration.ofHours(2);
// Returns a negative number, zero, or positive number if less than,
// equal to, or greater than the other.
int comparison = duration1.compareTo(duration2);
boolean equals = duration1.equals(duration2); // false
// Returns a duration with the new duration being negative of this
// duration.
Duration negated = duration1.negated();
// Returns a duration with the new duration being absolute of
// this duration, effectively, it returns the same as duration1.
Duration abs = negated.abs();
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024