[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › Time

Time representations, durations, and scheduling utilities.

Durations follow a pattern that other quantities in Evolu repeat, such as
sizes in Bytes.ts:

- [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) is the canonical unit, a validated number of milliseconds.
- [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral) is the human-readable form, such as `"1.5s"`,
  validated at compile time and runtime.
- [Duration](https://evolu.dev/docs/api-reference/common/Time/type-aliases/Duration) is what APIs accept: `DurationLiteral | Millis`.
- [durationToMillis](https://evolu.dev/docs/api-reference/common/Time/functions/durationToMillis) normalizes a `Duration` to `Millis`.

## Core

| Name                                                                    | Description                                                                                                                           |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| [Time](https://evolu.dev/docs/api-reference/common/Time/interfaces/Time)             | Time and timer operations.                                                                                                            |
| [TimeDep](https://evolu.dev/docs/api-reference/common/Time/interfaces/TimeDep)       | Dependency wrapper for [Time](https://evolu.dev/docs/api-reference/common/Time/interfaces/Time).                                                   |
| [TimeoutId](https://evolu.dev/docs/api-reference/common/Time/type-aliases/TimeoutId) | Opaque type for timeout handles.                                                                                                      |
| [createTime](https://evolu.dev/docs/api-reference/common/Time/functions/createTime)  | Creates a [Time](https://evolu.dev/docs/api-reference/common/Time/interfaces/Time) using `Date.now()`, `performance`, and `globalThis.setTimeout`. |

## Millis

| Name                                                                                             | Description                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Millis](https://evolu.dev/docs/api-reference/common/Time/type-aliases/Millis)                                | Non-negative integer milliseconds used for timestamps and durations.                                                                                                                                                      |
| [PositiveMillis](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PositiveMillis)                | Positive [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) value.                                                                                                                                            |
| [maxMillis](https://evolu.dev/docs/api-reference/common/Time/variables/maxMillis)                             | Maximum [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) value.                                                                                                                                             |
| [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis)                                   | Non-negative integer milliseconds used for timestamps and durations.                                                                                                                                                      |
| [minMillis](https://evolu.dev/docs/api-reference/common/Time/variables/minMillis)                             | Minimum [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) value.                                                                                                                                             |
| [ms120fps](https://evolu.dev/docs/api-reference/common/Time/variables/ms120fps)                               | Frame budget at 120fps (8ms).                                                                                                                                                                                             |
| [ms60fps](https://evolu.dev/docs/api-reference/common/Time/variables/ms60fps)                                 | Frame budget at 60fps (16ms).                                                                                                                                                                                             |
| [msLongTask](https://evolu.dev/docs/api-reference/common/Time/variables/msLongTask)                           | Long task threshold (50ms).                                                                                                                                                                                               |
| [PositiveMillis](https://evolu.dev/docs/api-reference/common/Time/variables/PositiveMillis)                   | Positive [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) value.                                                                                                                                            |
| [formatMillisAsClockTime](https://evolu.dev/docs/api-reference/common/Time/functions/formatMillisAsClockTime) | Formats [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) as local time in `HH:MM:SS.mmm` format.                                                                                                            |
| [formatMillisAsDuration](https://evolu.dev/docs/api-reference/common/Time/functions/formatMillisAsDuration)   | Formats [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) as a human-readable duration string.                                                                                                               |
| [millisToDateIso](https://evolu.dev/docs/api-reference/common/Time/functions/millisToDateIso)                 | Converts [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis) to [DateIso](https://evolu.dev/docs/api-reference/common/Type/variables/DateIso).                                                                              |
| [saturateMillis](https://evolu.dev/docs/api-reference/common/Time/functions/saturateMillis)                   | Converts a number to [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis), rounding to the nearest millisecond and saturating overflow at [maxMillis](https://evolu.dev/docs/api-reference/common/Time/variables/maxMillis). |

## Durations

| Name                                                                                                        | Description                                                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [DurationLiteralError](https://evolu.dev/docs/api-reference/common/Time/interfaces/DurationLiteralError)                 | Error returned when [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral) rejects a value.                                                                                                                 |
| [Duration](https://evolu.dev/docs/api-reference/common/Time/type-aliases/Duration)                                       | [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral) or [Millis](https://evolu.dev/docs/api-reference/common/Time/variables/Millis).                                                                                   |
| [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteral)                         | Duration literal string, from [DurationLiteralMilliseconds](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralMilliseconds) to [DurationLiteralYears](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralYears). |
| [DurationLiteralDays](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralDays)                 | Days duration: `"1d"` to `"6d"` or `"1.1d"` to `"6.9d"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                        |
| [DurationLiteralHours](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralHours)               | Hours duration: `"1h"` to `"23h"` or `"1.1h"` to `"23.9h"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [DurationLiteralMilliseconds](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralMilliseconds) | Milliseconds duration: `"1ms"` to `"999ms"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                                    |
| [DurationLiteralMinutes](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralMinutes)           | Minutes duration: `"1m"` to `"59m"` or `"1.1m"` to `"59.9m"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                   |
| [DurationLiteralSeconds](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralSeconds)           | Seconds duration: `"1s"` to `"59s"` or `"1.1s"` to `"59.9s"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                   |
| [DurationLiteralWeeks](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralWeeks)               | Weeks duration: `"1w"` to `"51w"` or `"1.1w"` to `"51.9w"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [DurationLiteralYears](https://evolu.dev/docs/api-reference/common/Time/type-aliases/DurationLiteralYears)               | Years duration: `"1y"` to `"99y"` or `"1.1y"` to `"99.9y"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [PositiveDuration](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PositiveDuration)                       | [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral) or [PositiveMillis](https://evolu.dev/docs/api-reference/common/Time/variables/PositiveMillis).                                                                   |
| [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral)                            | Duration literal Type with compile-time and runtime validation.                                                                                                                                                                       |
| [DurationLiteralDays](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralDays)                    | Days duration: `"1d"` to `"6d"` or `"1.1d"` to `"6.9d"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                        |
| [DurationLiteralHours](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralHours)                  | Hours duration: `"1h"` to `"23h"` or `"1.1h"` to `"23.9h"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [DurationLiteralMilliseconds](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralMilliseconds)    | Milliseconds duration: `"1ms"` to `"999ms"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                                    |
| [DurationLiteralMinutes](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralMinutes)              | Minutes duration: `"1m"` to `"59m"` or `"1.1m"` to `"59.9m"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                   |
| [DurationLiteralSeconds](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralSeconds)              | Seconds duration: `"1s"` to `"59s"` or `"1.1s"` to `"59.9s"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                   |
| [DurationLiteralWeeks](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralWeeks)                  | Weeks duration: `"1w"` to `"51w"` or `"1.1w"` to `"51.9w"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [DurationLiteralYears](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteralYears)                  | Years duration: `"1y"` to `"99y"` or `"1.1y"` to `"99.9y"`. See [DurationLiteral](https://evolu.dev/docs/api-reference/common/Time/variables/DurationLiteral).                                                                                     |
| [durationToMillis](https://evolu.dev/docs/api-reference/common/Time/functions/durationToMillis)                          | Converts a duration to milliseconds.                                                                                                                                                                                                  |

## Performance

| Name                                                                                                   | Description                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| [PerformanceDuration](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceDuration)            | Elapsed fractional milliseconds measured using [PerformanceTime](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceTime).         |
| [PerformanceTime](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceTime)                    | High-resolution milliseconds elapsed since [PerformanceTimeOrigin](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceTimeOrigin). |
| [PerformanceTimeOrigin](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceTimeOrigin)        | Unix epoch milliseconds used as the origin for [PerformanceTime](https://evolu.dev/docs/api-reference/common/Time/type-aliases/PerformanceTime).         |
| [performanceDurationBetween](https://evolu.dev/docs/api-reference/common/Time/functions/performanceDurationBetween) | Returns the elapsed fractional milliseconds between two performance times.                                                                  |

## Testing

| Name                                                                           | Description                                                                                                         |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
| [TestTime](https://evolu.dev/docs/api-reference/common/Time/interfaces/TestTime)            | Test [Time](https://evolu.dev/docs/api-reference/common/Time/interfaces/Time) with controllable timers.                          |
| [TestTimeDep](https://evolu.dev/docs/api-reference/common/Time/interfaces/TestTimeDep)      | Dependency wrapper for [TestTime](https://evolu.dev/docs/api-reference/common/Time/interfaces/TestTime).                         |
| [testCreateTime](https://evolu.dev/docs/api-reference/common/Time/functions/testCreateTime) | Creates a [TestTime](https://evolu.dev/docs/api-reference/common/Time/interfaces/TestTime) with controllable timers for testing. |