# Class DurationUtils

java.lang.Object
org.apache.commons.lang3.time.DurationUtils

public class DurationUtils extends Object
Utilities for `Duration`.

Since:
  3.12.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DurationUtils()`
  Deprecated.
  TODO Make private in 4.0.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <T extends Throwable>
  void`
  `accept(FailableBiConsumer<Long,Integer,T> consumer, Duration duration)`
  Accepts the function with the duration as a long milliseconds and int nanoseconds.
  `static Duration`
  `get(String key, TemporalUnit unit, long def)`
  Gets a Duration of unit stored in the system property at the given key.
  `static Duration`
  `getMillis(String key, long def)`
  Gets a Duration of milliseconds stored in the system property at the given key.
  `static int`
  `getNanosOfMiili(Duration duration)`
  Deprecated.
  Use `getNanosOfMilli(Duration)`.
  `static int`
  `getNanosOfMilli(Duration duration)`
  Gets the nanosecond part of a Duration converted to milliseconds.
  `static Duration`
  `getSeconds(String key, long def)`
  Gets a Duration of seconds stored in the system property at the given key.
  `static boolean`
  `isPositive(Duration duration)`
  Tests whether the given Duration is positive (duration > 0).
  `static <E extends Throwable>
  Duration`
  `of(FailableConsumer<Instant,E> consumer)`
  Runs the lambda and returns the duration of its execution.
  `static <E extends Throwable>
  Duration`
  `of(FailableRunnable<E> runnable)`
  Runs the lambda and returns the duration of its execution.
  `static Duration`
  `since(Temporal startInclusive)`
  Computes the Duration between a start instant and now.
  `static Duration`
  `toDuration(long amount, TimeUnit timeUnit)`
  Converts an amount and TimeUnit into a Duration.
  `static int`
  `toMillisInt(Duration duration)`
  Converts a Duration to milliseconds bound to an int (instead of a long).
  `static Duration`
  `zeroIfNull(Duration duration)`
  Returns the given non-null value or `Duration.ZERO` if null.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### DurationUtils

    @Deprecated public DurationUtils()
    Deprecated.
    TODO Make private in 4.0.
    Make private in 4.0.

- ## Method Details

  - ### accept

    public static <T extends Throwable> void accept(FailableBiConsumer<Long,Integer,T> consumer, Duration duration) throws T
    Accepts the function with the duration as a long milliseconds and int nanoseconds.
    Type Parameters:
      `T` - The function exception.
    Parameters:
      `consumer` - Accepting function.
      `duration` - The duration to pick apart.
    Throws:
      `T` - See the function signature.
    See Also:
      - `StopWatch`

  - ### get

    public static Duration get(String key, TemporalUnit unit, long def)
    Gets a Duration of unit stored in the system property at the given key.
    Parameters:
      `key` - The property name.
      `unit` - The unit that the duration is measured in, not null.
      `def` - The default value in the given unit.
    Returns:
      a Duration of seconds.
    Since:
      3.19.0

  - ### getMillis

    public static Duration getMillis(String key, long def)
    Gets a Duration of milliseconds stored in the system property at the given key.
    Parameters:
      `key` - The property name.
      `def` - The default value in milliseconds.
    Returns:
      a Duration of milliseconds.
    Since:
      3.19.0

  - ### getNanosOfMiili

    @Deprecated public static int getNanosOfMiili(Duration duration)
    Deprecated.
    Use `getNanosOfMilli(Duration)`.
    Gets the nanosecond part of a Duration converted to milliseconds.

    Handy when calling an API that takes a long of milliseconds and an int of nanoseconds. For example, `Object.wait(long, int)` and `Thread.sleep(long, int)`.

    Note that is this different from `Duration.getNano()` because a duration are seconds and nanoseconds.

    Parameters:
      `duration` - The duration to query.
    Returns:
      nanoseconds between 0 and 999,999.

  - ### getNanosOfMilli

    public static int getNanosOfMilli(Duration duration)
    Gets the nanosecond part of a Duration converted to milliseconds.

    Handy when calling an API that takes a long of milliseconds and an int of nanoseconds. For example, `Object.wait(long, int)` and `Thread.sleep(long, int)`.

    Note that is this different from `Duration.getNano()` because a duration are seconds and nanoseconds.

    Parameters:
      `duration` - The duration to query.
    Returns:
      nanoseconds between 0 and 999,999.
    Since:
      3.13.0

  - ### getSeconds

    public static Duration getSeconds(String key, long def)
    Gets a Duration of seconds stored in the system property at the given key.
    Parameters:
      `key` - The property name.
      `def` - The default value in seconds.
    Returns:
      a Duration of seconds.
    Since:
      3.19.0

  - ### isPositive

    public static boolean isPositive(Duration duration)
    Tests whether the given Duration is positive (duration > 0).
    Parameters:
      `duration` - the value to test
    Returns:
      whether the given Duration is positive (duration > 0).

  - ### of

    public static <E extends Throwable> Duration of(FailableConsumer<Instant,E> consumer) throws E
    Runs the lambda and returns the duration of its execution.
    Type Parameters:
      `E` - The type of exception throw by the lambda.
    Parameters:
      `consumer` - What to execute.
    Returns:
      The Duration of execution.
    Throws:
      `E` - thrown by the lambda.
    Since:
      3.13.0
    See Also:
      - `StopWatch`

  - ### of

    public static <E extends Throwable> Duration of(FailableRunnable<E> runnable) throws E
    Runs the lambda and returns the duration of its execution.
    Type Parameters:
      `E` - The type of exception throw by the lambda.
    Parameters:
      `runnable` - What to execute.
    Returns:
      The Duration of execution.
    Throws:
      `E` - thrown by the lambda.
    Since:
      3.13.0
    See Also:
      - `StopWatch`

  - ### since

    public static Duration since(Temporal startInclusive)
    Computes the Duration between a start instant and now.
    Parameters:
      `startInclusive` - the start instant, inclusive, not null.
    Returns:
      a `Duration`, not null.
    Since:
      3.13.0

  - ### toDuration

    public static Duration toDuration(long amount, TimeUnit timeUnit)
    Converts an amount and TimeUnit into a Duration.
    Parameters:
      `amount` - the amount of the duration, measured in terms of the unit, positive or negative
      `timeUnit` - the unit that the duration is measured in, must have an exact duration, not null
    Returns:
      a Duration.

  - ### toMillisInt

    public static int toMillisInt(Duration duration)
    Converts a Duration to milliseconds bound to an int (instead of a long).

    Handy for low-level APIs that take millisecond timeouts in ints rather than longs.

    - If the duration milliseconds are greater than `Integer.MAX_VALUE`, then return `Integer.MAX_VALUE`.
    - If the duration milliseconds are lesser than `Integer.MIN_VALUE`, then return `Integer.MIN_VALUE`.
    Parameters:
      `duration` - The duration to convert, not null.
    Returns:
      int milliseconds.

  - ### zeroIfNull

    public static Duration zeroIfNull(Duration duration)
    Returns the given non-null value or `Duration.ZERO` if null.
    Parameters:
      `duration` - The duration to test.
    Returns:
      The given duration or `Duration.ZERO`.