Duration.ts overview
Since v2.0.0
Exports Grouped by Category
- constructors
- conversions
- getters
- guards
- instances
- math
- models
- order
- pattern matching
- predicates
- symbol
- utils
constructors
days
Signature
declare const days: (days: number) => Duration
Since v2.0.0
hours
Signature
declare const hours: (hours: number) => Duration
Since v2.0.0
infinity
Signature
declare const infinity: Duration
Since v2.0.0
micros
Signature
declare const micros: (micros: bigint) => Duration
Since v2.0.0
millis
Signature
declare const millis: (millis: number) => Duration
Since v2.0.0
minutes
Signature
declare const minutes: (minutes: number) => Duration
Since v2.0.0
nanos
Signature
declare const nanos: (nanos: bigint) => Duration
Since v2.0.0
seconds
Signature
declare const seconds: (seconds: number) => Duration
Since v2.0.0
weeks
Signature
declare const weeks: (weeks: number) => Duration
Since v2.0.0
zero
Signature
declare const zero: Duration
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
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>
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>
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
}
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
Since v3.13.0
getters
toDays
Signature
declare const toDays: (self: DurationInput) => number
Since v3.8.0
toHours
Signature
declare const toHours: (self: DurationInput) => number
Since v3.8.0
toHrTime
Signature
declare const toHrTime: (self: DurationInput) => [seconds: number, nanos: number]
Since v2.0.0
toMillis
Signature
declare const toMillis: (self: DurationInput) => number
Since v2.0.0
toMinutes
Signature
declare const toMinutes: (self: DurationInput) => number
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>
Since v2.0.0
toSeconds
Signature
declare const toSeconds: (self: DurationInput) => number
Since v2.0.0
toWeeks
Signature
declare const toWeeks: (self: DurationInput) => number
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
Since v2.0.0
guards
isDuration
Signature
declare const isDuration: (u: unknown) => u is Duration
Since v2.0.0
isFinite
Signature
declare const isFinite: (self: Duration) => boolean
Since v2.0.0
isZero
Signature
declare const isZero: (self: Duration) => boolean
Since v3.5.0
instances
Equivalence
Signature
declare const Equivalence: equivalence.Equivalence<Duration>
Since v2.0.0
Order
Signature
declare const Order: order.Order<Duration>
Since v2.0.0
math
divide
Signature
declare const divide: {
(by: number): (self: DurationInput) => Option.Option<Duration>
(self: DurationInput, by: number): Option.Option<Duration>
}
Since v2.4.19
subtract
Signature
declare const subtract: {
(that: DurationInput): (self: DurationInput) => Duration
(self: DurationInput, that: DurationInput): Duration
}
Since v2.0.0
sum
Signature
declare const sum: {
(that: DurationInput): (self: DurationInput) => Duration
(self: DurationInput, that: DurationInput): Duration
}
Since v2.0.0
times
Signature
declare const times: {
(times: number): (self: DurationInput) => Duration
(self: DurationInput, times: number): Duration
}
Since v2.0.0
unsafeDivide
Signature
declare const unsafeDivide: {
(by: number): (self: DurationInput) => Duration
(self: DurationInput, by: number): Duration
}
Since v2.4.19
models
Duration (interface)
Signature
export interface Duration extends Equal.Equal, Pipeable, Inspectable {
readonly [TypeId]: TypeId
readonly value: DurationValue
}
Since v2.0.0
DurationInput (type alias)
Signature
type DurationInput =
| Duration
| number // millis
| bigint // nanos
| readonly [seconds: number, nanos: number]
| `${number} ${Unit}`
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"
}
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"
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
}
Since v2.0.0
max
Signature
declare const max: {
(that: DurationInput): (self: DurationInput) => Duration
(self: DurationInput, that: DurationInput): Duration
}
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
}
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
}
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
}
Since v2.0.0
equals
Signature
declare const equals: {
(that: DurationInput): (self: DurationInput) => boolean
(self: DurationInput, that: DurationInput): boolean
}
Since v2.0.0
greaterThan
Signature
declare const greaterThan: {
(that: DurationInput): (self: DurationInput) => boolean
(self: DurationInput, that: DurationInput): boolean
}
Since v2.0.0
greaterThanOrEqualTo
Signature
declare const greaterThanOrEqualTo: {
(that: DurationInput): (self: DurationInput) => boolean
(self: DurationInput, that: DurationInput): boolean
}
Since v2.0.0
lessThan
Signature
declare const lessThan: {
(that: DurationInput): (self: DurationInput) => boolean
(self: DurationInput, that: DurationInput): boolean
}
Since v2.0.0
lessThanOrEqualTo
Signature
declare const lessThanOrEqualTo: {
(that: DurationInput): (self: DurationInput) => boolean
(self: DurationInput, that: DurationInput): boolean
}
Since v2.0.0
symbol
TypeId (type alias)
Signature
type TypeId = typeof TypeId
Since v2.0.0
utils
decode
Signature
declare const decode: (input: DurationInput) => Duration
Since v2.0.0
decodeUnknown
Signature
declare const decodeUnknown: (u: unknown) => Option.Option<Duration>
Since v2.5.0
min
Signature
declare const min: {
(that: DurationInput): (self: DurationInput) => Duration
(self: DurationInput, that: DurationInput): Duration
}
Since v2.0.0