The Date: module provides Unix-timestamp-based date arithmetic and formatting. All timestamps are Number (seconds since the Unix epoch, as returned by Date:Now).
Supported strftime format specifiers: %Y year · %m month · %d day · %H hour · %M minute · %S second.
| Call | Effect |
|---|---|
Date:Now(outVar) |
Current Unix timestamp → outVar |
Date:Format(ts, fmt, outVar) |
Format timestamp using strftime-style format → outVar |
Date:Parse(str, fmt, outVar) |
Parse date string to timestamp → outVar (-1 on failure) |
Date:Year(ts, outVar) |
Full year (e.g. 2025) → outVar |
Date:Month(ts, outVar) |
Month 1–12 → outVar |
Date:Day(ts, outVar) |
Day of month 1–31 → outVar |
Date:Hour(ts, outVar) |
Hour 0–23 → outVar |
Date:Minute(ts, outVar) |
Minute 0–59 → outVar |
Date:Second(ts, outVar) |
Second 0–59 → outVar |
Date:Add(ts, days, outVar) / Date:AddDays |
Timestamp + days × 86400 → outVar |
Date:Diff(ts1, ts2, outVar) / Date:DaysBetween |
(ts2 − ts1) in whole days → outVar |
Var:Number ts;
Date:Now(ts);
Var:String formatted;
Date:Format(ts, "%Y-%m-%d", formatted);
Konsol:Print(formatted); // e.g. 2025-08-01
Var:Number year; Var:Number month; Var:Number day;
Date:Year(ts, year);
Date:Month(ts, month);
Date:Day(ts, day);
Konsol:Print("${year}-${month}-${day}");
// Add 7 days
Var:Number nextWeek;
Date:Add(ts, 7, nextWeek);
Date:Format(nextWeek, "%Y-%m-%d", formatted);
Konsol:Print(formatted);
// Days between two timestamps
Var:Number past;
Date:Parse("2025-01-01", "%Y-%m-%d", past);
Var:Number diff;
Date:Diff(past, ts, diff);
Konsol:Print("${diff} days since Jan 1");
For current wall-clock time (hour/minute/second) without arithmetic, see Time.
// 37_date.ks — Date module
Var:Number ts;
Var:Number n;
Var:String s;
Konsol:Print("=== Now ===");
Date:Now(ts);
Konsol:Print(ts > 0); // true (non-zero Unix timestamp)
Konsol:Print("=== Format ===");
// Use a known fixed timestamp: 2025-01-15 12:30:45 UTC
// 1736944245 — but localtime varies by timezone, so we test round-trip instead
Date:Now(ts);
Date:Format(ts, "%Y-%m-%d", s);
Konsol:Print(s); // e.g. 2026-05-08 (current date)
Date:Format(ts, "%H:%M:%S", s);
Konsol:Print(s); // e.g. 14:23:01 (current time)
Konsol:Print("=== Parse ===");
Date:Parse("2025-06-15", "%Y-%m-%d", n);
Konsol:Print(n > 0); // true
Date:Format(n, "%Y-%m-%d", s);
Konsol:Print(s); // 2025-06-15
Date:Parse("2025-12-31 23:59:59", "%Y-%m-%d %H:%M:%S", n);
Date:Format(n, "%Y-%m-%d", s);
Konsol:Print(s); // 2025-12-31
Konsol:Print("=== Components ===");
Date:Parse("2025-06-15 08:30:45", "%Y-%m-%d %H:%M:%S", ts);
Date:Year(ts, n); Konsol:Print(n); // 2025
Date:Month(ts, n); Konsol:Print(n); // 6
Date:Day(ts, n); Konsol:Print(n); // 15
Date:Hour(ts, n); Konsol:Print(n); // 8
Date:Minute(ts, n); Konsol:Print(n); // 30
Date:Second(ts, n); Konsol:Print(n); // 45
Konsol:Print("=== Add ===");
Date:Parse("2025-01-01", "%Y-%m-%d", ts);
Date:Add(ts, 30, n);
Date:Format(n, "%Y-%m-%d", s);
Konsol:Print(s); // 2025-01-31
Date:Add(ts, 365, n);
Date:Format(n, "%Y-%m-%d", s);
Konsol:Print(s); // 2026-01-01
Konsol:Print("=== Diff ===");
Date:Parse("2025-01-01", "%Y-%m-%d", ts);
Var:Number ts2;
Date:Parse("2025-03-01", "%Y-%m-%d", ts2);
Date:Diff(ts, ts2, n);
Konsol:Print(n); // 59
Konsol:Print("done");