Skip to main content Link Search Menu Expand Document (external link)

Duration.ts overview

Since v2.0.0


Exports Grouped by Category


constructors

days

Signature

declare const days: (days: number) => Duration

Source

Since v2.0.0

hours

Signature

declare const hours: (hours: number) => Duration

Source

Since v2.0.0

infinity

Signature

declare const infinity: Duration

Source

Since v2.0.0

micros

Signature

declare const micros: (micros: bigint) => Duration

Source

Since v2.0.0

millis

Signature

declare const millis: (millis: number) => Duration

Source

Since v2.0.0

minutes

Signature

declare const minutes: (minutes: number) => Duration

Source

Since v2.0.0

nanos

Signature

declare const nanos: (nanos: bigint) => Duration

Source

Since v2.0.0

seconds

Signature

declare const seconds: (seconds: number) => Duration

Source

Since v2.0.0

weeks

Signature

declare const weeks: (weeks: number) => Duration

Source

Since v2.0.0

zero

Signature

declare const zero: Duration

Source

Since v2.0.0

conversions

format

Converts a Duration to a human readable string.

Example

import { Duration } from "effect"

Duration.format(Duration.millis(1000)) // "1s"
Duration.format(Duration.millis(1001)) // "1s 1ms"

Signature

declare const format: (self: DurationInput) => string

Source

Since v2.0.0

formatIso

Formats a Duration into an ISO8601 duration string.

Months are assumed to be 30 days and years are assumed to be 365 days.

Returns Option.none() if the duration is infinite.

Example

import { Duration, Option } from "effect"

Duration.formatIso(Duration.days(1)) // => Option.some("P1D")
Duration.formatIso(Duration.minutes(90)) // => Option.some("PT1H30M")
Duration.formatIso(Duration.millis(1500)) // => Option.some("PT1.5S")
Duration.formatIso(Duration.infinity) // => Option.none()

Signature

declare const formatIso: (self: DurationInput) => Option.Option<string>

Source

Since v3.13.0

fromIso

Parses an ISO8601 duration string into a Duration.

Months are assumed to be 30 days and years are assumed to be 365 days.

Example

import { Duration, Option } from "effect"

Duration.fromIso("P1D") // => Option.some(Duration.days(1))
Duration.fromIso("PT1H") // => Option.some(Duration.hours(1))
Duration.fromIso("PT1M") // => Option.some(Duration.minutes(1))
Duration.fromIso("PT1.5S") // => Option.some(Duration.seconds(1.5))

Signature

declare const fromIso: (iso: string) => Option.Option<Duration>

Source

Since v3.13.0

parts

Converts a Duration to its parts.

Signature

declare const parts: (self: DurationInput) => {
  days: number
  hours: number
  minutes: number
  seconds: number
  millis: number
  nanos: number
}

Source

Since v3.8.0

unsafeFormatIso

Formats a Duration into an ISO8601 duration string.

Months are assumed to be 30 days and years are assumed to be 365 days.

Milliseconds and nanoseconds are expressed as fractional seconds.

Throws

RangeError If the duration is not finite.

Example

import { Duration } from "effect"

Duration.unsafeFormatIso(Duration.days(1)) // => "P1D"
Duration.unsafeFormatIso(Duration.minutes(90)) // => "PT1H30M"
Duration.unsafeFormatIso(Duration.millis(1500)) // => "PT1.5S"

Signature

declare const unsafeFormatIso: (self: DurationInput) => string

Source

Since v3.13.0

getters

toDays

Signature

declare const toDays: (self: DurationInput) => number

Source

Since v3.8.0

toHours

Signature

declare const toHours: (self: DurationInput) => number

Source

Since v3.8.0

toHrTime

Signature

declare const toHrTime: (self: DurationInput) => [seconds: number, nanos: number]

Source

Since v2.0.0

toMillis

Signature

declare const toMillis: (self: DurationInput) => number

Source

Since v2.0.0

toMinutes

Signature

declare const toMinutes: (self: DurationInput) => number

Source

Since v3.8.0

toNanos

Get the duration in nanoseconds as a bigint.

If the duration is infinite, returns Option.none()

Signature

declare const toNanos: (self: DurationInput) => Option.Option<bigint>

Source

Since v2.0.0

toSeconds

Signature

declare const toSeconds: (self: DurationInput) => number

Source

Since v2.0.0

toWeeks

Signature

declare const toWeeks: (self: DurationInput) => number

Source

Since v3.8.0

unsafeToNanos

Get the duration in nanoseconds as a bigint.

If the duration is infinite, it throws an error.

Signature

declare const unsafeToNanos: (self: DurationInput) => bigint

Source

Since v2.0.0

guards

isDuration

Signature

declare const isDuration: (u: unknown) => u is Duration

Source

Since v2.0.0

isFinite

Signature

declare const isFinite: (self: Duration) => boolean

Source

Since v2.0.0

isZero

Signature

declare const isZero: (self: Duration) => boolean

Source

Since v3.5.0

instances

Equivalence

Signature

declare const Equivalence: equivalence.Equivalence<Duration>

Source

Since v2.0.0

Order

Signature

declare const Order: order.Order<Duration>

Source

Since v2.0.0

math

divide

Signature

declare const divide: {
  (by: number): (self: DurationInput) => Option.Option<Duration>
  (self: DurationInput, by: number): Option.Option<Duration>
}

Source

Since v2.4.19

subtract

Signature

declare const subtract: {
  (that: DurationInput): (self: DurationInput) => Duration
  (self: DurationInput, that: DurationInput): Duration
}

Source

Since v2.0.0

sum

Signature

declare const sum: {
  (that: DurationInput): (self: DurationInput) => Duration
  (self: DurationInput, that: DurationInput): Duration
}

Source

Since v2.0.0

times

Signature

declare const times: {
  (times: number): (self: DurationInput) => Duration
  (self: DurationInput, times: number): Duration
}

Source

Since v2.0.0

unsafeDivide

Signature

declare const unsafeDivide: {
  (by: number): (self: DurationInput) => Duration
  (self: DurationInput, by: number): Duration
}

Source

Since v2.4.19

models

Duration (interface)

Signature

export interface Duration extends Equal.Equal, Pipeable, Inspectable {
  readonly [TypeId]: TypeId
  readonly value: DurationValue
}

Source

Since v2.0.0

DurationInput (type alias)

Signature

type DurationInput =
  | Duration
  | number // millis
  | bigint // nanos
  | readonly [seconds: number, nanos: number]
  | `${number} ${Unit}`

Source

Since v2.0.0

DurationValue (type alias)

Signature

type DurationValue =
  | {
      readonly _tag: "Millis"
      readonly millis: number
    }
  | {
      readonly _tag: "Nanos"
      readonly nanos: bigint
    }
  | {
      readonly _tag: "Infinity"
    }

Source

Since v2.0.0

Unit (type alias)

Signature

type Unit =
  | "nano"
  | "nanos"
  | "micro"
  | "micros"
  | "milli"
  | "millis"
  | "second"
  | "seconds"
  | "minute"
  | "minutes"
  | "hour"
  | "hours"
  | "day"
  | "days"
  | "week"
  | "weeks"

Source

Since v2.0.0

order

clamp

Signature

declare const clamp: {
  (options: { minimum: DurationInput; maximum: DurationInput }): (self: DurationInput) => Duration
  (self: DurationInput, options: { minimum: DurationInput; maximum: DurationInput }): Duration
}

Source

Since v2.0.0

max

Signature

declare const max: {
  (that: DurationInput): (self: DurationInput) => Duration
  (self: DurationInput, that: DurationInput): Duration
}

Source

Since v2.0.0

pattern matching

match

Signature

declare const match: {
  <A, B>(options: {
    readonly onMillis: (millis: number) => A
    readonly onNanos: (nanos: bigint) => B
  }): (self: DurationInput) => A | B
  <A, B>(
    self: DurationInput,
    options: { readonly onMillis: (millis: number) => A; readonly onNanos: (nanos: bigint) => B }
  ): A | B
}

Source

Since v2.0.0

matchWith

Signature

declare const matchWith: {
  <A, B>(
    that: DurationInput,
    options: {
      readonly onMillis: (self: number, that: number) => A
      readonly onNanos: (self: bigint, that: bigint) => B
    }
  ): (self: DurationInput) => A | B
  <A, B>(
    self: DurationInput,
    that: DurationInput,
    options: {
      readonly onMillis: (self: number, that: number) => A
      readonly onNanos: (self: bigint, that: bigint) => B
    }
  ): A | B
}

Source

Since v2.0.0

predicates

between

Checks if a Duration is between a minimum and maximum value.

Signature

declare const between: {
  (options: { minimum: DurationInput; maximum: DurationInput }): (self: DurationInput) => boolean
  (self: DurationInput, options: { minimum: DurationInput; maximum: DurationInput }): boolean
}

Source

Since v2.0.0

equals

Signature

declare const equals: {
  (that: DurationInput): (self: DurationInput) => boolean
  (self: DurationInput, that: DurationInput): boolean
}

Source

Since v2.0.0

greaterThan

Signature

declare const greaterThan: {
  (that: DurationInput): (self: DurationInput) => boolean
  (self: DurationInput, that: DurationInput): boolean
}

Source

Since v2.0.0

greaterThanOrEqualTo

Signature

declare const greaterThanOrEqualTo: {
  (that: DurationInput): (self: DurationInput) => boolean
  (self: DurationInput, that: DurationInput): boolean
}

Source

Since v2.0.0

lessThan

Signature

declare const lessThan: {
  (that: DurationInput): (self: DurationInput) => boolean
  (self: DurationInput, that: DurationInput): boolean
}

Source

Since v2.0.0

lessThanOrEqualTo

Signature

declare const lessThanOrEqualTo: {
  (that: DurationInput): (self: DurationInput) => boolean
  (self: DurationInput, that: DurationInput): boolean
}

Source

Since v2.0.0

symbol

TypeId (type alias)

Signature

type TypeId = typeof TypeId

Source

Since v2.0.0

utils

decode

Signature

declare const decode: (input: DurationInput) => Duration

Source

Since v2.0.0

decodeUnknown

Signature

declare const decodeUnknown: (u: unknown) => Option.Option<Duration>

Source

Since v2.5.0

min

Signature

declare const min: {
  (that: DurationInput): (self: DurationInput) => Duration
  (self: DurationInput, that: DurationInput): Duration
}

Source

Since v2.0.0