Home / Modules / Math / TimeUtils

TimeUtils

Pure logic

Provides system and manually controlled clock helpers for consistent millisecond and second timestamps.

CategoryMath
Dependency tierPure logic
Internal depsnone
Related modulesnone
Take just this module
modules/math/TimeUtils.js

Copy it together with its internal dependencies, preserving the relative directory structure.

Source

export class Clock {
  constructor({ manual = false, nowMs = 0 } = {}) {
    this.manual = manual;
    this.currentMs = nowMs;
  }

  now() {
    return this.manual ? this.currentMs : Date.now();
  }

  nowSeconds() {
    return this.now() * 0.001;
  }

  useSystem() {
    this.manual = false;
    return this;
  }

  useManual(nowMs = this.currentMs) {
    this.manual = true;
    this.currentMs = nowMs;
    return this;
  }

  setMs(nowMs) {
    this.currentMs = nowMs;
    return this;
  }

  advanceMs(deltaMs) {
    this.currentMs += deltaMs;
    return this;
  }
}

export const DEFAULT_CLOCK = new Clock();