Esc
Start typing to search...

Duration Module

Functions for representing and manipulating time spans.

The Duration module provides a Duration type backed by chrono for representing differences in time. Durations can be created from various units and combined with arithmetic operations.

Common patterns

import Duration

let d = Duration.fromHours 2
Duration.toMinutes d    -- 120

Functions

Creation

Duration.zero

() -> Duration

Create a zero-length duration

Example:
import Duration

Duration.zero ()
Try it

Duration.fromMillis

Int -> Duration

Create a duration from milliseconds

Example:
import Duration

Duration.fromMillis 1500
Try it

Duration.fromSeconds

Int -> Duration

Create a duration from seconds

Example:
import Duration

Duration.fromSeconds 60
Try it

Duration.fromMinutes

Int -> Duration

Create a duration from minutes

Example:
import Duration

Duration.fromMinutes 30
Try it

Duration.fromHours

Int -> Duration

Create a duration from hours

Example:
import Duration

Duration.fromHours 24
Try it

Duration.fromDays

Int -> Duration

Create a duration from days

Example:
import Duration

Duration.fromDays 7
Try it

Duration.fromWeeks

Int -> Duration

Create a duration from weeks

Example:
import Duration

Duration.fromWeeks 2
Try it

Conversion

Duration.toMillis

Duration -> Int

Get the total milliseconds

Example:
import Duration

Duration.toMillis (Duration.fromSeconds 5)  -- 5000
Try it

Duration.toSeconds

Duration -> Int

Get the total seconds

Example:
import Duration

Duration.toSeconds (Duration.fromMinutes 2)  -- 120
Try it

Duration.toMinutes

Duration -> Int

Get the total minutes

Example:
import Duration

Duration.toMinutes (Duration.fromHours 2)  -- 120
Try it

Duration.toHours

Duration -> Int

Get the total hours

Example:
import Duration

Duration.toHours (Duration.fromDays 1)  -- 24
Try it

Duration.toDays

Duration -> Int

Get the total days

Example:
import Duration

Duration.toDays (Duration.fromWeeks 1)  -- 7
Try it

Duration.toWeeks

Duration -> Int

Get the total weeks

Example:
import Duration

Duration.toWeeks (Duration.fromDays 14)  -- 2
Try it

Arithmetic

Duration.add

Duration -> Duration -> Result Duration DurationError

Add two durations

Example:
import Duration

let d1 = Duration.fromMinutes 30
let d2 = Duration.fromMinutes 45
Duration.add d1 d2
Try it

Duration.sub

Duration -> Duration -> Result Duration DurationError

Subtract two durations

Example:
import Duration

let d1 = Duration.fromMinutes 60
let d2 = Duration.fromMinutes 15
Duration.sub d1 d2
Try it

Duration.mul

Int -> Duration -> Result Duration DurationError

Multiply duration by an integer

Example:
import Duration

let d = Duration.fromMinutes 15
Duration.mul 4 d
Try it

Duration.div

Int -> Duration -> Result Duration DurationError

Divide duration by an integer

Example:
import Duration

let d = Duration.fromMinutes 60
Duration.div 4 d
Try it

Duration.negate

Duration -> Duration

Negate a duration

Example:
import Duration

Duration.negate (Duration.fromSeconds 30)
Try it

Duration.abs

Duration -> Duration

Get the absolute value of a duration

Example:
import Duration

Duration.abs (Duration.fromSeconds (-30))
Try it

Comparison

Duration.isZero

Duration -> Bool

Check if the duration is zero

Example:
import Duration

Duration.isZero (Duration.zero ())
Try it

Duration.isPositive

Duration -> Bool

Check if the duration is positive

Example:
import Duration

Duration.isPositive (Duration.fromSeconds 30)
Try it

Duration.isNegative

Duration -> Bool

Check if the duration is negative

Example:
import Duration

Duration.isNegative (Duration.fromSeconds (-30))
Try it

Duration.compare

Duration -> Duration -> Int

Compare two durations (-1 if less, 0 if equal, 1 if greater)

Example:
import Duration

Duration.compare (Duration.fromSeconds 30) (Duration.fromSeconds 60)
Try it