public class Duration extends Object implements Serializable, Comparable<Duration>
PnDTnHnMnS, with 'P' and 'T' optional. Days are considered to be exactly 24 hours.
Similarly to the
java.time.Duration class, this class does not support year or month sections in the format.
This implementation does not support fractions or negative values.
parse(CharSequence), Serialized Form
|Modifier and Type||Field and Description|
Constant for a duration of zero.
|Modifier and Type||Method and Description|
Converts this duration to the total length in milliseconds.
A string representation of this duration using ISO-8601 seconds based representation, such as
public static final Duration ZERO
public static Duration parse(CharSequence text)
Durationfrom a text string such as
This will parse a textual representation of a duration, including the string produced by
formats accepted are based on the ISO-8601 duration format
PnDTnHnMnS with days considered to be exactly
This implementation does not support negative numbers or fractions (so the smallest non-zero value a Duration can have is one second).
The string optionally starts with the ASCII letter "P" in upper or lower case. There are then four sections, each
consisting of a number and a suffix. The sections have suffixes in ASCII of "D", "H", "M" and "S" for days,
hours, minutes and seconds, accepted in upper or lower case. The suffixes must occur in order. The ASCII letter
"T" may occur before the first occurrence, if any, of an hour, minute or second section. At least one of the four
sections must be present, and if "T" is present there must be at least one section after the "T". The number part
of each section must consist of one or more ASCII digits. The number may not be prefixed by the ASCII negative or
positive symbol. The number of days, hours, minutes and seconds must parse to a
"PT20S" -- parses as "20 seconds" "PT15M" -- parses as "15 minutes" (where a minute is 60 seconds) "PT10H" -- parses as "10 hours" (where an hour is 3600 seconds) "P2D" -- parses as "2 days" (where a day is 24 hours or 86400 seconds) "P2DT3H4M" -- parses as "2 days, 3 hours and 4 minutes"
text- the text to parse, not null
IllegalArgumentException- if the text cannot be parsed to a duration
public long toMillis()
public String toString()
The format of the returned string will be
PnDTnHnMnS, where n is the relevant days, hours, minutes or
seconds part of the duration. If a section has a zero value, it is omitted. The hours, minutes and seconds are
"20 seconds" -- "PT20S "15 minutes" (15 * 60 seconds) -- "PT15M" "10 hours" (10 * 3600 seconds) -- "PT10H" "2 days" (2 * 86400 seconds) -- "P2D"
public int compareTo(Duration other)
Copyright © 1999-2023 The Apache Software Foundation. All Rights Reserved.
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo, and the Apache Log4j logo are trademarks of The Apache Software Foundation.