Time

The Time: module reads the current wall-clock time and provides a high-resolution process timer for benchmarking. All methods follow the ByRef convention.


Call Effect
Time:GetHour(outVar) Current hour (0–23) → outVar
Time:GetMinute(outVar) Current minute → outVar
Time:GetSecond(outVar) Current second → outVar
Time:GetDay(outVar) Day of month → outVar
Time:GetMonth(outVar) Month (1–12) → outVar
Time:GetYear(outVar) Full year (e.g. 2025) → outVar
Time:GetTimer(outVar) Seconds since process epoch (double, for timing) → outVar
Var:Number h;
Var:Number m;
Var:Number s;
Time:GetHour(h);
Time:GetMinute(m);
Time:GetSecond(s);
Konsol:Print("${h}:${m}:${s}");

Var:Number t0;
Var:Number t1;
Time:GetTimer(t0);
// ... work ...
Time:GetTimer(t1);
Konsol:Print("elapsed: ${t1 - t0}s");

For date arithmetic and formatting, see Date.


Examples

// 13_time.ks — Time module + GetTimer for benchmarking

Konsol:Print("=== Time Module ===");

Var:Number result;

// Current date
Time:GetYear(result);   Konsol:Print("Year   = ${result}");
Time:GetMonth(result);  Konsol:Print("Month  = ${result}");
Time:GetDay(result);    Konsol:Print("Day    = ${result}");

// Current time
Time:GetHour(result);   Konsol:Print("Hour   = ${result}");
Time:GetMinute(result); Konsol:Print("Minute = ${result}");
Time:GetSecond(result); Konsol:Print("Second = ${result}");

// Format a date string manually
Var:Number yr;
Var:Number mo;
Var:Number dy;
Time:GetYear(yr);
Time:GetMonth(mo);
Time:GetDay(dy);
Konsol:Print("Date: ${yr} - ${mo} - ${dy}");

// Format a time string
Var:Number hr;
Var:Number mn;
Var:Number sc;
Time:GetHour(hr);
Time:GetMinute(mn);
Time:GetSecond(sc);
Konsol:Print("Time: ${hr} : ${mn} : ${sc}");

// ── GetTimer — benchmark a loop ──────────────────────────────────────────────
Konsol:Print("--- benchmark ---");
Var:Number start;
Time:GetTimer(start);

// Do some work
Var:Number sum = 0;
for (Var:Number i = 0; i < 10000; i++) {
    sum += i;
}
Konsol:Print("sum 0..9999 = ${sum}");

Var:Number end;
Time:GetTimer(end);
Var:Number elapsed = end - start;
Konsol:Print("elapsed (s) = ${elapsed}");

// ── Time-based logic ─────────────────────────────────────────────────────────
Konsol:Print("--- time-based greeting ---");
Var:Number h;
Time:GetHour(h);

if (h < 12) {
    Konsol:Print("Good morning!");
} else if (h < 18) {
    Konsol:Print("Good afternoon!");
} else {
    Konsol:Print("Good evening!");
}

// ── Simple stopwatch ─────────────────────────────────────────────────────────
Konsol:Print("--- stopwatch ---");
Var:Number t0;
Time:GetTimer(t0);

Konsol:Delay(150);

Var:Number t1;
Time:GetTimer(t1);
Konsol:Print("150ms delay measured (s) = ${t1 - t0}");