(self: Duration): stringConverts 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"export const const format: (self: Duration) => stringConverts 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"
format = (self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self: Duration): string => {
if (self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self.Duration.value: DurationValuevalue._tag: | "Millis"
| "Nanos"
| "Infinity"
| "NegativeInfinity"
_tag === "Infinity") {
return "Infinity"
}
if (self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self.Duration.value: DurationValuevalue._tag: "Millis" | "Nanos" | "NegativeInfinity"_tag === "NegativeInfinity") {
return "-Infinity"
}
if (const isZero: (self: Duration) => booleanChecks whether a Duration is zero.
Example (Checking for zero durations)
import { Duration } from "effect"
console.log(Duration.isZero(Duration.zero)) // true
console.log(Duration.isZero(Duration.seconds(1))) // false
isZero(self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self)) {
return "0"
}
if (const isNegative: (
self: Duration
) => boolean
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))) // true
console.log(Duration.isNegative(Duration.zero)) // false
console.log(Duration.isNegative(Duration.negativeInfinity)) // true
isNegative(self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self)) {
return "-" + const format: (self: Duration) => stringConverts 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"
format(const abs: (self: Duration) => DurationReturns the absolute value of the duration.
Example (Taking absolute duration values)
import { Duration } from "effect"
Duration.toMillis(Duration.abs(Duration.seconds(-5))) // 5000
Duration.abs(Duration.negativeInfinity) === Duration.infinity // true
abs(self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self))
}
const const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments = const parts: (self: Duration) => {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
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 parts
const 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
// }
parts(self: Duration(parameter) self: {
value: DurationValue;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
self)
const const pieces: any[]pieces = []
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.days: numberdays !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.days: numberdays}d`)
}
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.hours: numberhours !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.hours: numberhours}h`)
}
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.minutes: numberminutes !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.minutes: numberminutes}m`)
}
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.seconds: numberseconds !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.seconds: numberseconds}s`)
}
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.millis: numbermillis !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.millis: numbermillis}ms`)
}
if (const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.nanos: numbernanos !== 0) {
const pieces: any[]pieces.Array<any>.push(...items: any[]): numberAppends new elements to the end of an array, and returns the new length of the array.
push(`${const fragments: {
days: number
hours: number
minutes: number
seconds: number
millis: number
nanos: number
}
fragments.nanos: numbernanos}ns`)
}
return const pieces: string[]pieces.Array<string>.join(separator?: string): stringAdds all the elements of an array into a string, separated by the specified separator string.
join(" ")
}