Clock

Read time 2 minutes Package: Nalix.Environment
On this page

This page covers the public time utilities in Nalix.Environment.

Source mapping

  • src/Nalix.Environment/Time/Clock.cs
  • src/Nalix.Environment/Time/Clock.Unix.cs

What it is

Clock is the shared time utility for monotonic timing, UTC time access, and Unix time conversion.

Basic usage

DateTime now = Clock.NowUtc();
long mono = Clock.MonoTicksNow();
double ms = Clock.MonoTicksToMilliseconds(mono);

Public members

Properties

MemberTypeDescription
TicksPerSecondlongFrequency of the high-resolution timer in ticks per second
EpochMillisecondslongCustom epoch (Unix ms) for ID generation (2025-01-01 UTC)

Methods

MethodReturn typeDescription
NowUtc()DateTimeCurrent UTC time reconstructed from monotonic stopwatch
UnixMillisecondsNow()longCurrent Unix timestamp in milliseconds
UnixSecondsNow()longCurrent Unix timestamp in seconds
UnixSecondsNowUInt32()uintCurrent Unix timestamp in seconds as uint32 (safe until ~2106)
UnixMicrosecondsNow()longCurrent Unix timestamp in microseconds
UnixTicksNow()longCurrent Unix timestamp in ticks
UnixTime()TimeSpanCurrent Unix time as TimeSpan
EpochMillisecondsNow()longMilliseconds since the custom 2025-01-01 epoch
ClampUnixMilliseconds(long, long, long)longClamps a Unix millisecond timestamp value into [min, max]
MonoTicksNow()longCurrent monotonic tick count (for latency/RTT measurement)
MonoTicksToMilliseconds(long)doubleConverts a monotonic tick delta into milliseconds

Example

long ms = Clock.UnixMillisecondsNow();
long mono = Clock.MonoTicksNow();

// Measure elapsed time
long start = Clock.MonoTicksNow();
// ... work ...
double elapsedMs = Clock.MonoTicksToMilliseconds(Clock.MonoTicksNow() - start);

// Custom epoch IDs
long id = Clock.EpochMillisecondsNow();