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

Duration overview

Added in v1.0.0


Table of contents


constructors

days

Signature

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

Added in v1.0.0

hours

Signature

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

Added in v1.0.0

infinity

Signature

export declare const infinity: Duration

Added in v1.0.0

micros

Signature

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

Added in v1.0.0

millis

Signature

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

Added in v1.0.0

minutes

Signature

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

Added in v1.0.0

nanos

Signature

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

Added in v1.0.0

seconds

Signature

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

Added in v1.0.0

weeks

Signature

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

Added in v1.0.0

zero

Signature

export declare const zero: Duration

Added in v1.0.0

getters

toHrTime

Signature

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

Added in v1.0.0

toMillis

Signature

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

Added in v1.0.0

toNanos

Get the duration in nanoseconds as a bigint.

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

Signature

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

Added in v1.0.0

toSeconds

Signature

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

Added in v1.0.0

unsafeToNanos

Get the duration in nanoseconds as a bigint.

If the duration is infinite, it throws an error.

Signature

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

Added in v1.0.0

guards

isDuration

Signature

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

Added in v1.0.0

instances

Equivalence

Signature

export declare const Equivalence: equivalence.Equivalence<Duration>

Added in v1.0.0

Order

Signature

export declare const Order: order.Order<Duration>

Added in v1.0.0

math

sum

Signature

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

Added in v1.0.0

times

Signature

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

Added in v1.0.0

models

Duration (interface)

Signature

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

Added in v1.0.0

DurationInput (type alias)

Signature

export type DurationInput =
  | Duration
  | number // millis
  | bigint // nanos
  | `${number} ${Unit}`

Added in v1.0.0

DurationValue (type alias)

Signature

export type DurationValue = { _tag: 'Millis'; millis: number } | { _tag: 'Nanos'; nanos: bigint } | { _tag: 'Infinity' }

Added in v1.0.0

Unit (type alias)

Signature

export type Unit = 'nanos' | 'micros' | 'millis' | 'seconds' | 'minutes' | 'hours' | 'days' | 'weeks'

Added in v1.0.0

pattern matching

match

Signature

export 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
}

Added in v1.0.0

matchWith

Signature

export 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
}

Added in v1.0.0

predicates

between

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

Signature

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

Added in v1.0.0

equals

Signature

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

Added in v1.0.0

greaterThan

Signature

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

Added in v1.0.0

greaterThanOrEqualTo

Signature

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

Added in v1.0.0

lessThan

Signature

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

Added in v1.0.0

lessThanOrEqualTo

Signature

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

Added in v1.0.0

symbol

TypeId (type alias)

Signature

export type TypeId = typeof TypeId

Added in v1.0.0

utils

clamp

Signature

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

Added in v1.0.0

decode

Signature

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

Added in v1.0.0

max

Signature

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

Added in v1.0.0

min

Signature

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

Added in v1.0.0