Duration.ts
Duration.ts overview
Section titled “Duration.ts overview”Represents immutable spans of time.
A Duration can be finite, positive infinity, or negative infinity. It is
the standard representation for delays, timeouts, intervals, and
time-to-live values across Effect APIs. This module includes constructors
from common input shapes, unit conversions, comparisons, arithmetic,
formatting, and reusable reducer or combiner helpers.
Since v2.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”constructors
Section titled “constructors”Creates a Duration from days.
Example (Creating durations from days)
import { Duration } from "effect"
const duration = Duration.days(1)console.log(Duration.toMillis(duration)) // 86400000Signature
declare const days: (days: number) => DurationSince v2.0.0
fromInput
Section titled “fromInput”Decodes a Input value into a Duration safely, returning
Option.none() if decoding fails.
Example (Safely decoding duration inputs)
import { Duration, Option } from "effect"
Duration.fromInput(1000).pipe(Option.map(Duration.toSeconds)) // Some(1)
Duration.fromInput("invalid" as any) // NoneSignature
declare const fromInput: (u: Input) => Option.Option<Duration>Since v4.0.0
fromInputUnsafe
Section titled “fromInputUnsafe”Decodes a Duration.Input into a Duration.
When to use
Use when the input has already been validated or comes from a trusted source and throwing is acceptable for invalid duration syntax.
Gotchas
If the input is not a valid Duration.Input, it throws an error.
Example (Decoding duration inputs)
import { Duration } from "effect"
const duration1 = Duration.fromInputUnsafe(1000) // 1000 millisecondsconst duration2 = Duration.fromInputUnsafe("5 seconds")const duration3 = Duration.fromInputUnsafe("Infinity")const duration4 = Duration.fromInputUnsafe([2, 500_000_000]) // 2 seconds and 500msSignature
declare const fromInputUnsafe: (input: Input) => DurationSince v4.0.0
Creates a Duration from hours.
Example (Creating durations from hours)
import { Duration } from "effect"
const duration = Duration.hours(2)console.log(Duration.toMillis(duration)) // 7200000Signature
declare const hours: (hours: number) => DurationSince v2.0.0
infinity
Section titled “infinity”A Duration representing infinite time.
Example (Referencing infinite duration)
import { Duration } from "effect"
console.log(Duration.toMillis(Duration.infinity)) // InfinitySignature
declare const infinity: DurationSince v2.0.0
micros
Section titled “micros”Creates a Duration from microseconds.
Example (Creating durations from microseconds)
import { Duration } from "effect"
const duration = Duration.micros(BigInt(500_000))console.log(Duration.toMillis(duration)) // 500Signature
declare const micros: (micros: bigint) => DurationSince v2.0.0
millis
Section titled “millis”Creates a Duration from milliseconds.
Example (Creating durations from milliseconds)
import { Duration } from "effect"
const duration = Duration.millis(1000)console.log(Duration.toMillis(duration)) // 1000Signature
declare const millis: (millis: number) => DurationSince v2.0.0
minutes
Section titled “minutes”Creates a Duration from minutes.
Example (Creating durations from minutes)
import { Duration } from "effect"
const duration = Duration.minutes(5)console.log(Duration.toMillis(duration)) // 300000Signature
declare const minutes: (minutes: number) => DurationSince v2.0.0
Creates a Duration from nanoseconds.
Example (Creating durations from nanoseconds)
import { Duration } from "effect"
const duration = Duration.nanos(BigInt(500_000_000))console.log(Duration.toMillis(duration)) // 500Signature
declare const nanos: (nanos: bigint) => DurationSince v2.0.0
negativeInfinity
Section titled “negativeInfinity”A Duration representing negative infinite time.
Example (Referencing negative infinite duration)
import { Duration } from "effect"
console.log(Duration.toMillis(Duration.negativeInfinity)) // -InfinitySignature
declare const negativeInfinity: DurationSince v4.0.0
seconds
Section titled “seconds”Creates a Duration from seconds.
Example (Creating durations from seconds)
import { Duration } from "effect"
const duration = Duration.seconds(30)console.log(Duration.toMillis(duration)) // 30000Signature
declare const seconds: (seconds: number) => DurationSince v2.0.0
Creates a Duration from weeks.
Example (Creating durations from weeks)
import { Duration } from "effect"
const duration = Duration.weeks(1)console.log(Duration.toMillis(duration)) // 604800000Signature
declare const weeks: (weeks: number) => DurationSince v2.0.0
A Duration representing zero time.
Example (Referencing the zero duration)
import { Duration } from "effect"
console.log(Duration.toMillis(Duration.zero)) // 0Signature
declare const zero: DurationSince v2.0.0
converting
Section titled “converting”format
Section titled “format”Converts a Duration to a human readable string.
Example (Formatting durations)
import { Duration } from "effect"
Duration.format(Duration.millis(1000)) // "1s"Duration.format(Duration.millis(1001)) // "1s 1ms"Signature
declare const format: (self: Duration) => stringSince v2.0.0
Decomposes a Duration into normalized signed components.
Details
Finite durations are returned as { days, hours, minutes, seconds, millis, nanos }. Infinite durations return every component as Infinity or
-Infinity.
Example (Decomposing durations into parts)
import { Duration } from "effect"
// Create a complex duration by adding multiple partsconst duration = Duration.sum( Duration.sum( Duration.sum(Duration.days(1), Duration.hours(2)), Duration.sum(Duration.minutes(30), Duration.seconds(45)) ), Duration.millis(123))const components = Duration.parts(duration)console.log(components)// {// days: 1,// hours: 2,// minutes: 30,// seconds: 45,// millis: 123,// nanos: 0// }
const complex = Duration.sum(Duration.hours(25), Duration.minutes(90))const complexParts = Duration.parts(complex)console.log(complexParts)// {// days: 1,// hours: 2,// minutes: 30,// seconds: 0,// millis: 0,// nanos: 0// }Signature
declare const parts: (self: Duration) => { days: number hours: number minutes: number seconds: number millis: number nanos: number}Since v3.8.0
getters
Section titled “getters”toDays
Section titled “toDays”Converts a Duration to days.
Example (Converting durations to days)
import { Duration } from "effect"
console.log(Duration.toDays(Duration.hours(48))) // 2console.log(Duration.toDays(Duration.weeks(1))) // 7Signature
declare const toDays: (self: Input) => numberSince v3.8.0
toHours
Section titled “toHours”Converts a Duration to hours.
Example (Converting durations to hours)
import { Duration } from "effect"
console.log(Duration.toHours(Duration.minutes(120))) // 2console.log(Duration.toHours(Duration.days(1))) // 24Signature
declare const toHours: (self: Input) => numberSince v3.8.0
toHrTime
Section titled “toHrTime”Converts a Duration to high-resolution time format [seconds, nanoseconds].
Example (Converting durations to high-resolution time)
import { Duration } from "effect"
const duration = Duration.millis(1500)const hrtime = Duration.toHrTime(duration)console.log(hrtime) // [1, 500000000]Signature
declare const toHrTime: (input: Input) => [seconds: number, nanos: number]Since v2.0.0
toMillis
Section titled “toMillis”Converts a Duration to milliseconds.
Example (Converting durations to milliseconds)
import { Duration } from "effect"
console.log(Duration.toMillis(Duration.seconds(5))) // 5000console.log(Duration.toMillis(Duration.minutes(2))) // 120000Signature
declare const toMillis: (self: Input) => numberSince v2.0.0
toMinutes
Section titled “toMinutes”Converts a Duration to minutes.
Example (Converting durations to minutes)
import { Duration } from "effect"
console.log(Duration.toMinutes(Duration.seconds(120))) // 2console.log(Duration.toMinutes(Duration.hours(1))) // 60Signature
declare const toMinutes: (self: Input) => numberSince v3.8.0
toNanos
Section titled “toNanos”Gets the duration in nanoseconds safely as an Option<bigint>.
Details
If the duration is infinite, returns Option.none().
Example (Safely reading nanoseconds)
import { Duration, Option } from "effect"
Duration.toNanos(Duration.seconds(1)) // Some(1000000000n)
Duration.toNanos(Duration.infinity) // NoneOption.getOrUndefined(Duration.toNanos(Duration.infinity)) // undefinedSignature
declare const toNanos: (self: Input) => Option.Option<bigint>Since v2.0.0
toNanosUnsafe
Section titled “toNanosUnsafe”Gets the duration in nanoseconds as a bigint.
When to use
Use when the duration is known to be finite and you need the nanosecond value
as a bigint.
Details
Millisecond-backed fractional durations are rounded to the nearest nanosecond, with ties away from zero.
Gotchas
If the duration is infinite, it throws an error.
Example (Reading nanoseconds unsafely)
import { Duration } from "effect"
const duration = Duration.seconds(2)const nanos = Duration.toNanosUnsafe(duration)console.log(nanos) // 2000000000n
// Duration.toNanosUnsafe(Duration.infinity)// throws Error: "Cannot convert infinite duration to nanos"Signature
declare const toNanosUnsafe: (input: Input) => bigintSince v4.0.0
toSeconds
Section titled “toSeconds”Converts a Duration to seconds.
Example (Converting durations to seconds)
import { Duration } from "effect"
console.log(Duration.toSeconds(Duration.millis(5000))) // 5console.log(Duration.toSeconds(Duration.minutes(2))) // 120Signature
declare const toSeconds: (self: Input) => numberSince v2.0.0
toWeeks
Section titled “toWeeks”Converts a Duration to weeks.
Example (Converting durations to weeks)
import { Duration } from "effect"
console.log(Duration.toWeeks(Duration.days(14))) // 2console.log(Duration.toWeeks(Duration.days(7))) // 1Signature
declare const toWeeks: (self: Input) => numberSince v3.8.0
guards
Section titled “guards”isDuration
Section titled “isDuration”Checks whether a value is a Duration.
Example (Checking for durations)
import { Duration } from "effect"
console.log(Duration.isDuration(Duration.seconds(1))) // trueconsole.log(Duration.isDuration(1000)) // falseSignature
declare const isDuration: (u: unknown) => u is DurationSince v2.0.0
isFinite
Section titled “isFinite”Checks whether a Duration is finite (not infinite).
Example (Checking finite durations)
import { Duration } from "effect"
console.log(Duration.isFinite(Duration.seconds(5))) // trueconsole.log(Duration.isFinite(Duration.infinity)) // falseSignature
declare const isFinite: (self: Duration) => booleanSince v2.0.0
isNegative
Section titled “isNegative”Returns true if the duration is negative (strictly less than zero).
Example (Checking for negative durations)
import { Duration } from "effect"
console.log(Duration.isNegative(Duration.seconds(-5))) // trueconsole.log(Duration.isNegative(Duration.zero)) // falseconsole.log(Duration.isNegative(Duration.negativeInfinity)) // trueSignature
declare const isNegative: (self: Duration) => booleanSince v4.0.0
isPositive
Section titled “isPositive”Returns true if the duration is positive (strictly greater than zero).
Example (Checking for positive durations)
import { Duration } from "effect"
console.log(Duration.isPositive(Duration.seconds(5))) // trueconsole.log(Duration.isPositive(Duration.zero)) // falseconsole.log(Duration.isPositive(Duration.infinity)) // trueSignature
declare const isPositive: (self: Duration) => booleanSince v4.0.0
isZero
Section titled “isZero”Checks whether a Duration is zero.
Example (Checking for zero durations)
import { Duration } from "effect"
console.log(Duration.isZero(Duration.zero)) // trueconsole.log(Duration.isZero(Duration.seconds(1))) // falseSignature
declare const isZero: (self: Duration) => booleanSince v3.5.0
instances
Section titled “instances”Equivalence
Section titled “Equivalence”Provides an Equivalence instance for comparing Duration values.
Example (Comparing durations for equivalence)
import { Duration } from "effect"
const isEqual = Duration.Equivalence(Duration.seconds(5), Duration.millis(5000))console.log(isEqual) // trueSignature
declare const Equivalence: Equ.Equivalence<Duration>Since v2.0.0
Provides an Order instance for comparing Duration values.
Details
NegativeInfinity < any finite value < Infinity.
Example (Sorting durations)
import { Duration } from "effect"
const durations = [Duration.seconds(3), Duration.seconds(1), Duration.seconds(2)]const sorted = durations.sort((a, b) => Duration.Order(a, b))console.log(sorted.map(Duration.toSeconds)) // [1, 2, 3]Signature
declare const Order: order.Order<Duration>Since v2.0.0
CombinerMax
Section titled “CombinerMax”Combiner that returns the maximum Duration.
When to use
Use to keep the longest Duration when an API consumes a Combiner.
See
CombinerMinfor keeping the shortestDurationmaxfor comparing twoDurationvalues directly
Signature
declare const CombinerMax: Combiner.Combiner<Duration>Since v4.0.0
CombinerMin
Section titled “CombinerMin”Combiner that returns the minimum Duration.
When to use
Use to keep the shortest Duration through APIs that consume a Combiner.
See
CombinerMaxfor keeping the longestDurationminfor comparing twoDurationvalues directly
Signature
declare const CombinerMin: Combiner.Combiner<Duration>Since v4.0.0
ReducerSum
Section titled “ReducerSum”Reducer for summing Durations.
When to use
Use to sum many Duration values through APIs that consume a Reducer.
Details
ReducerSum uses sum and starts from zero, so combineAll([]) returns
zero.
See
sumfor adding two duration values directlyCombinerMaxfor keeping the longest duration instead of summingCombinerMinfor keeping the shortest duration instead of summing
Signature
declare const ReducerSum: Reducer.Reducer<Duration>Since v4.0.0
Returns the absolute value of the duration.
Example (Taking absolute duration values)
import { Duration } from "effect"
Duration.toMillis(Duration.abs(Duration.seconds(-5))) // 5000Duration.abs(Duration.negativeInfinity) === Duration.infinity // trueSignature
declare const abs: (self: Duration) => DurationSince v4.0.0
divide
Section titled “divide”Divides a Duration by a finite, non-zero number safely.
Details
Returns Option.none() for zero, negative zero, or non-finite divisors. For
nanosecond-backed durations, also returns Option.none() when the divisor
cannot be converted to a bigint, such as a fractional divisor.
Example (Safely dividing durations)
import { Duration, Option } from "effect"
const d = Duration.divide(Duration.seconds(10), 2)console.log(Option.map(d, Duration.toSeconds)) // Some(5)
Duration.divide(Duration.seconds(10), 0) // NoneSignature
declare const divide: { (by: number): (self: Duration) => Option.Option<Duration> (self: Duration, by: number): Option.Option<Duration>}Since v2.4.19
divideUnsafe
Section titled “divideUnsafe”Divides a Duration by a number using fallback rules instead of returning
an Option.
When to use
Use when dividing a Duration should return Duration.zero or signed
infinity for invalid cases instead of forcing callers to handle Option.none.
Details
Non-finite divisors return Duration.zero. Division by positive or negative
zero can produce signed infinity for non-zero finite durations, while zero
or infinite durations divided by zero produce Duration.zero.
Nanosecond-backed durations return Duration.zero when the divisor cannot
be converted to a bigint.
Example (Dividing durations unsafely)
import { Duration } from "effect"
const half = Duration.divideUnsafe(Duration.seconds(10), 2)console.log(Duration.toSeconds(half)) // 5
const infinite = Duration.divideUnsafe(Duration.seconds(10), 0)console.log(Duration.toMillis(infinite)) // InfinitySignature
declare const divideUnsafe: { (by: number): (self: Duration) => Duration; (self: Duration, by: number): Duration }Since v4.0.0
negate
Section titled “negate”Returns the negated duration.
Example (Negating durations)
import { Duration } from "effect"
Duration.toMillis(Duration.negate(Duration.seconds(5))) // -5000Duration.negate(Duration.infinity) === Duration.negativeInfinity // trueSignature
declare const negate: (self: Duration) => DurationSince v4.0.0
subtract
Section titled “subtract”Subtracts one Duration from another. The result can be negative.
Details
Infinity subtraction follows signed-infinity arithmetic. Subtracting the same infinity from itself returns zero. Positive infinity minus negative infinity or any finite duration remains positive infinity. Negative infinity minus positive infinity or any finite duration remains negative infinity. Finite durations minus positive infinity produce negative infinity, and finite durations minus negative infinity produce positive infinity.
Example (Subtracting durations)
import { Duration } from "effect"
const result = Duration.subtract(Duration.seconds(10), Duration.seconds(3))console.log(Duration.toSeconds(result)) // 7Signature
declare const subtract: { (that: Duration): (self: Duration) => Duration; (self: Duration, that: Duration): Duration }Since v2.0.0
Adds two Durations together.
Details
Infinity addition follows these rules:
- infinity + infinity = infinity
- infinity + negativeInfinity = zero
- infinity + finite = infinity
- negativeInfinity + negativeInfinity = negativeInfinity
- negativeInfinity + finite = negativeInfinity
Example (Adding durations)
import { Duration } from "effect"
const total = Duration.sum(Duration.seconds(5), Duration.seconds(3))console.log(Duration.toSeconds(total)) // 8Signature
declare const sum: { (that: Duration): (self: Duration) => Duration; (self: Duration, that: Duration): Duration }Since v2.0.0
Returns a Duration multiplied by a number.
Details
For nanosecond-backed durations, the multiplier must be convertible to a
bigint; fractional or non-finite multipliers can throw. Infinite
durations return positive infinity, negative infinity, or zero depending on
the multiplier sign.
Example (Multiplying durations)
import { Duration } from "effect"
const doubled = Duration.times(Duration.seconds(5), 2)console.log(Duration.toSeconds(doubled)) // 10Signature
declare const times: { (times: number): (self: Duration) => Duration; (self: Duration, times: number): Duration }Since v2.0.0
models
Section titled “models”Duration (interface)
Section titled “Duration (interface)”Represents a span of time with high precision, supporting operations from nanoseconds to weeks.
When to use
Use to model elapsed time, delays, timeouts, schedule intervals, and cache TTLs as immutable duration values.
See
Inputfor values accepted by APIs that decode duration-like inputsDurationValuefor the tagged representation exposed by thevaluefield
Signature
export interface Duration extends Equal.Equal, Pipeable, Inspectable.Inspectable { readonly [TypeId]: typeof TypeId readonly value: DurationValue}Since v2.0.0
DurationObject (interface)
Section titled “DurationObject (interface)”An object with optional duration components that can be combined to create a Duration. All fields are optional and additive.
Details
Compatible with Temporal.Duration-like objects.
Example (Combining duration object fields)
import { Duration } from "effect"
Duration.fromInputUnsafe({ seconds: 30 })Duration.fromInputUnsafe({ days: 1 })Duration.fromInputUnsafe({ seconds: 1, nanoseconds: 500 })Signature
export interface DurationObject { readonly weeks?: number | undefined readonly days?: number | undefined readonly hours?: number | undefined readonly minutes?: number | undefined readonly seconds?: number | undefined readonly milliseconds?: number | undefined readonly microseconds?: number | undefined readonly nanoseconds?: number | undefined}Since v4.0.0
DurationValue (type alias)
Section titled “DurationValue (type alias)”Tagged representation of a Duration value.
When to use
Use when modeling or inspecting the exact tagged representation stored in a
Duration, including finite millisecond or nanosecond values and infinite
sentinels.
Details
A duration is represented as milliseconds, nanoseconds, positive infinity, or negative infinity.
See
Durationfor the public type whosevaluefield contains this representationmatchfor pattern matching without readingvaluedirectly
Signature
type DurationValue = | { _tag: "Millis"; millis: number } | { _tag: "Nanos"; nanos: bigint } | { _tag: "Infinity" } | { _tag: "NegativeInfinity" }Since v2.0.0
Input (type alias)
Section titled “Input (type alias)”Valid input types that can be converted to a Duration.
When to use
Use when an API should accept any value that Effect can convert into a
Duration, including existing durations, millisecond numbers, nanosecond
bigints, high-resolution tuples, duration strings, infinity strings, or
duration objects.
Details
String inputs accept values like "10 seconds", "500 millis",
"Infinity", and "-Infinity". Finite fractional values that are
normalized to nanoseconds are rounded to the nearest nanosecond, with ties
away from zero.
See
fromInputfor safe conversion toOptionfromInputUnsafefor throwing conversionDurationObjectfor object-shaped duration inputUnitfor supported string units
Signature
type Input = | Duration | number // millis | bigint // nanos | readonly [seconds: number, nanos: number] | `${number} ${Unit}` | "Infinity" | "-Infinity" | DurationObjectSince v4.0.0
Unit (type alias)
Section titled “Unit (type alias)”Valid time units that can be used in duration string representations.
When to use
Use when typing the unit portion of duration string inputs accepted by
Duration.Input.
See
Inputfor the full duration input union
Signature
type Unit = | "nano" | "nanos" | "micro" | "micros" | "milli" | "millis" | "second" | "seconds" | "minute" | "minutes" | "hour" | "hours" | "day" | "days" | "week" | "weeks"Since v2.0.0
ordering
Section titled “ordering”Returns a Duration constrained between a minimum and maximum value.
Example (Clamping durations to a range)
import { Duration } from "effect"
const clamped = Duration.clamp(Duration.seconds(10), { minimum: Duration.seconds(2), maximum: Duration.seconds(5)})console.log(Duration.toSeconds(clamped)) // 5Signature
declare const clamp: { (options: { minimum: Duration; maximum: Duration }): (self: Duration) => Duration (self: Duration, options: { minimum: Duration; maximum: Duration }): Duration}Since v2.0.0
Returns the larger of two Durations.
Example (Selecting the longer duration)
import { Duration } from "effect"
const longer = Duration.max(Duration.seconds(5), Duration.seconds(3))console.log(Duration.toSeconds(longer)) // 5Signature
declare const max: { (that: Duration): (self: Duration) => Duration; (self: Duration, that: Duration): Duration }Since v2.0.0
Returns the smaller of two Durations.
Example (Selecting the shorter duration)
import { Duration } from "effect"
const shorter = Duration.min(Duration.seconds(5), Duration.seconds(3))console.log(Duration.toSeconds(shorter)) // 3Signature
declare const min: { (that: Duration): (self: Duration) => Duration; (self: Duration, that: Duration): Duration }Since v2.0.0
pattern matching
Section titled “pattern matching”Pattern matches on the representation of a Duration.
Details
Provide handlers for millisecond-backed values, nanosecond-backed values,
and positive infinity. Use onNegativeInfinity to handle negative infinity
separately; otherwise negative infinity is handled by onInfinity.
Example (Pattern matching on duration representations)
import { Duration } from "effect"
const result = Duration.match(Duration.seconds(5), { onMillis: (millis) => `${millis} milliseconds`, onNanos: (nanos) => `${nanos} nanoseconds`, onInfinity: () => "infinite"})console.log(result) // "5000 milliseconds"Signature
declare const match: { <A, B, C, D = C>(options: { readonly onMillis: (millis: number) => A readonly onNanos: (nanos: bigint) => B readonly onInfinity: () => C readonly onNegativeInfinity?: () => D }): (self: Duration) => A | B | C | D <A, B, C, D = C>( self: Duration, options: { readonly onMillis: (millis: number) => A readonly onNanos: (nanos: bigint) => B readonly onInfinity: () => C readonly onNegativeInfinity?: () => D } ): A | B | C | D}Since v2.0.0
matchPair
Section titled “matchPair”Pattern matches on two Durations, providing handlers that receive both values.
Example (Pattern matching on duration pairs)
import { Duration } from "effect"
const sum = Duration.matchPair(Duration.seconds(3), Duration.seconds(2), { onMillis: (a, b) => a + b, onNanos: (a, b) => Number(a + b), onInfinity: () => Infinity})console.log(sum) // 5000Signature
declare const matchPair: { <A, B, C>( that: Duration, options: { readonly onMillis: (self: number, that: number) => A readonly onNanos: (self: bigint, that: bigint) => B readonly onInfinity: (self: Duration, that: Duration) => C } ): (self: Duration) => A | B | C <A, B, C>( self: Duration, that: Duration, options: { readonly onMillis: (self: number, that: number) => A readonly onNanos: (self: bigint, that: bigint) => B readonly onInfinity: (self: Duration, that: Duration) => C } ): A | B | C}Since v4.0.0
predicates
Section titled “predicates”between
Section titled “between”Returns true if a Duration is greater than or equal to minimum and
less than or equal to maximum, according to Duration.Order.
When to use
Use to test whether a duration is inside an inclusive range.
Details
Both bounds are inclusive and compared with Duration.Order.
Gotchas
The bounds are not normalized. If minimum is greater than maximum, the
predicate returns false for every duration.
Example (Checking duration ranges)
import { Duration } from "effect"
const isInRange = Duration.between(Duration.seconds(3), { minimum: Duration.seconds(2), maximum: Duration.seconds(5)})console.log(isInRange) // trueSee
clampfor constraining a duration to a rangeisGreaterThanOrEqualTofor checking only the lower boundisLessThanOrEqualTofor checking only the upper bound
Signature
declare const between: { (options: { minimum: Duration; maximum: Duration }): (self: Duration) => boolean (self: Duration, options: { minimum: Duration; maximum: Duration }): boolean}Since v2.0.0
equals
Section titled “equals”Checks whether two Durations are equal.
Example (Checking duration equality)
import { Duration } from "effect"
const isEqual = Duration.equals(Duration.seconds(5), Duration.millis(5000))console.log(isEqual) // trueSignature
declare const equals: { (that: Duration): (self: Duration) => boolean; (self: Duration, that: Duration): boolean }Since v2.0.0
isGreaterThan
Section titled “isGreaterThan”Checks whether the first Duration is greater than the second.
Example (Comparing durations with greater than)
import { Duration } from "effect"
const isGreater = Duration.isGreaterThan(Duration.seconds(5), Duration.seconds(3))console.log(isGreater) // trueSignature
declare const isGreaterThan: { (that: Duration): (self: Duration) => boolean (self: Duration, that: Duration): boolean}Since v4.0.0
isGreaterThanOrEqualTo
Section titled “isGreaterThanOrEqualTo”Checks whether the first Duration is greater than or equal to the second.
Example (Comparing durations with greater than or equal)
import { Duration } from "effect"
const isGreaterOrEqual = Duration.isGreaterThanOrEqualTo(Duration.seconds(5), Duration.seconds(5))console.log(isGreaterOrEqual) // trueSignature
declare const isGreaterThanOrEqualTo: { (that: Duration): (self: Duration) => boolean (self: Duration, that: Duration): boolean}Since v4.0.0
isLessThan
Section titled “isLessThan”Checks whether the first Duration is less than the second.
Example (Comparing durations with less than)
import { Duration } from "effect"
const isLess = Duration.isLessThan(Duration.seconds(3), Duration.seconds(5))console.log(isLess) // trueSignature
declare const isLessThan: { (that: Duration): (self: Duration) => boolean; (self: Duration, that: Duration): boolean }Since v4.0.0
isLessThanOrEqualTo
Section titled “isLessThanOrEqualTo”Checks whether the first Duration is less than or equal to the second.
Example (Comparing durations with less than or equal)
import { Duration } from "effect"
const isLessOrEqual = Duration.isLessThanOrEqualTo(Duration.seconds(5), Duration.seconds(5))console.log(isLessOrEqual) // trueSignature
declare const isLessThanOrEqualTo: { (that: Duration): (self: Duration) => boolean (self: Duration, that: Duration): boolean}Since v4.0.0