Skip to main content
The Clock service provides access to time-related operations.

Type Definition

interface Clock {
  readonly currentTimeMillis: Effect<number>
  readonly currentTimeNanos: Effect<bigint>
  readonly sleep: (duration: Duration) => Effect<void>
}

Operations

currentTimeMillis

Gets current time in milliseconds.
const currentTimeMillis: Effect<number, never, never>

currentTimeNanos

Gets current time in nanoseconds.
const currentTimeNanos: Effect<bigint, never, never>

sleep

Sleeps for a given duration.
const sleep: (duration: Duration) => Effect<void>

clockWith

Accesses the Clock service.
const clockWith: <A, E, R>(f: (clock: Clock) => Effect<A, E, R>) => Effect<A, E, R>

Example

import { Clock, Effect } from "effect"

const program = Effect.gen(function* () {
  const start = yield* Clock.currentTimeMillis
  yield* Clock.sleep("1 second")
  const end = yield* Clock.currentTimeMillis
  console.log(`Elapsed: ${end - start}ms`)
})

Build docs developers (and LLMs) love