Install
openclaw skills install truetimeEnsure real-time accurate scheduling and planning across UTC, server time, NTP-sourced time, user local time, and arbitrary time zones. Use for timers, reminders, cron planning, in X minutes or months or years calculations, absolute timestamp conversion, Chinese lunar date awareness, and cross-timezone coordination. Enforce exact duration fidelity so user values are never replaced by example values, compute target times in UTC first, and verify deltas before execution.
openclaw skills install truetimeUse this skill to avoid time mistakes caused by stale examples, wrong units, timezone drift, or DST confusion.
1 minute stays 1 minute).node {baseDir}/scripts/true_time.mjs --plus 1m --user-tz Asia/Shanghainode {baseDir}/scripts/true_time.mjs --plus 1month2weeks --user-tz America/New_York --calendar-tz America/New_Yorknode {baseDir}/scripts/true_time.mjs --target 2026-02-17T09:30:00 --target-tz Asia/Shanghai --user-tz America/Los_Angelesnode {baseDir}/scripts/true_time.mjs --plus 1h --time-source ntptarget_utc - now_utc equals requested delta.ms, msec, msecs, millisecond, millisecondss, sec, second, secondsm, min, minute, minutesh, hr, hour, hoursd, day, daysw, week, weeksmo, mon, month, monthsy, yr, year, yearsdecade, decadescentury, centuries1.5m, 0.25h, 2.5day, 250.5ms, 1.5month, 0.1year, 0.5decade, 0.01century.. is preferred; , is accepted as input and normalized.month/year/decade/century are calendar-aware, not fixed seconds.--calendar-tz (fallback: user timezone -> server timezone).1.5m = 90s250ms = 0.25s1m = 60s1h30m = 5400s2d = 172800s1.5year = 18 months1decade = 10 years0.5decade = 5 years1century = 100 years0.01century = 1 yearAsia/Shanghai, America/Los_Angeles, UTC).CST, IST) unless user confirms meaning.node {baseDir}/scripts/true_time.mjs --list-timezonesnode {baseDir}/scripts/true_time.mjs --list-timezones | rg -i '^(UTC|Asia/(Shanghai|Tokyo|Kolkata)|America/(Los_Angeles|New_York)|Europe/(London|Paris|Berlin))$'--list-timezones.--user-tz <IANA>.Common timezones to use in examples and user-facing confirmations:
UTC (no DST)Asia/Shanghai (Beijing time, UTC+08:00, no DST)Asia/Tokyo (Tokyo time, UTC+09:00, no DST)Asia/Kolkata (India time, UTC+05:30, no DST)America/Los_Angeles (US West: PST UTC-08:00 / PDT UTC-07:00, DST applies)America/New_York (US East: EST UTC-05:00 / EDT UTC-04:00, DST applies)America/Chicago (US Central: CST UTC-06:00 / CDT UTC-05:00, DST applies)America/Denver (US Mountain: MST UTC-07:00 / MDT UTC-06:00, DST applies)America/Phoenix (Arizona: MST UTC-07:00, typically no DST)America/Anchorage (Alaska: AKST UTC-09:00 / AKDT UTC-08:00, DST applies)Pacific/Honolulu (Hawaii: HST UTC-10:00, no DST)Europe/London (UK: GMT UTC+00:00 / BST UTC+01:00, DST applies)Europe/Paris (CET UTC+01:00 / CEST UTC+02:00, DST applies)Europe/Berlin (CET UTC+01:00 / CEST UTC+02:00, DST applies)Europe/Amsterdam (CET UTC+01:00 / CEST UTC+02:00, DST applies)America/*, many Europe/*).2026-11-01T01:30:00 in America/Los_Angeles is ambiguous.-07:00 (before fallback) or -08:00 (after fallback), or provide explicit offset in --target.2026-03-08T02:30:00 in America/Los_Angeles does not exist.01:30 or 03:30).--target 2026-11-01T01:30:00-07:00--target 2026-11-01T01:30:00-08:00lunar_timezone (default Asia/Shanghai, configurable via --lunar-tz)now_lunartarget_lunar--time-source server).--time-source ntp--ntp-server <host> (repeatable or comma-separated)--ntp-timeout-ms <ms>node {baseDir}/scripts/true_time.mjs --plus 30m --time-source ntp --ntp-server time.google.comUse TrueTime calculations before any of the following:
cron add, cron update, cron wake, cron run) when time or schedule is involved.target_utc_iso and optionally epoch seconds).node .../true_time.mjs).openclaw-sandbox:bookworm-slim may not include Node; use openclaw-sandbox-common:bookworm-slim or install Node in agents.defaults.sandbox.docker.setupCommand.Relative calculations:
node {baseDir}/scripts/true_time.mjs --plus 1m --user-tz Asia/Shanghainode {baseDir}/scripts/true_time.mjs --plus 1.5m --user-tz Asia/Shanghainode {baseDir}/scripts/true_time.mjs --plus 250.5ms --user-tz Asia/Tokyonode {baseDir}/scripts/true_time.mjs --plus 1h30m --user-tz Asia/Tokyonode {baseDir}/scripts/true_time.mjs --plus 2h --user-tz America/Los_Angelesnode {baseDir}/scripts/true_time.mjs --plus 45m --user-tz America/New_Yorknode {baseDir}/scripts/true_time.mjs --plus 1d --user-tz Asia/Kolkatanode {baseDir}/scripts/true_time.mjs --plus 1month --user-tz America/Chicago --calendar-tz America/Chicagonode {baseDir}/scripts/true_time.mjs --plus 1.5month --user-tz America/Chicago --calendar-tz America/Chicagonode {baseDir}/scripts/true_time.mjs --plus 1year --user-tz America/Denver --calendar-tz America/Denvernode {baseDir}/scripts/true_time.mjs --plus 0.1year --user-tz America/Denver --calendar-tz America/Denvernode {baseDir}/scripts/true_time.mjs --plus 1decade --user-tz Pacific/Honolulu --calendar-tz Pacific/Honolulunode {baseDir}/scripts/true_time.mjs --plus 0.5decade --user-tz Pacific/Honolulu --calendar-tz Pacific/Honolulunode {baseDir}/scripts/true_time.mjs --plus 1century --user-tz UTC --calendar-tz UTCnode {baseDir}/scripts/true_time.mjs --plus 0.01century --user-tz UTC --calendar-tz UTCAbsolute and cross-timezone calculations:
node {baseDir}/scripts/true_time.mjs --target 2026-02-18T09:00:00 --target-tz Asia/Shanghai --user-tz Asia/Shanghainode {baseDir}/scripts/true_time.mjs --target 2026-05-20T14:00:00 --target-tz Europe/London --user-tz America/New_Yorknode {baseDir}/scripts/true_time.mjs --target 2026-04-15T16:00:00Z --user-tz Europe/Berlinnode {baseDir}/scripts/true_time.mjs --target 2026-11-01T01:30:00-07:00 --user-tz America/Los_Angelesnode {baseDir}/scripts/true_time.mjs --target 2026-11-01T01:30:00-08:00 --user-tz America/Los_Angelesnode {baseDir}/scripts/true_time.mjs --plus 15m --time-source ntp --user-tz Asia/ShanghaiWhen sending or scheduling time-sensitive actions, always include:
now_utctarget_utctarget_user_tz (if known)target_server_tzdelta_millisecondsdelta_secondstime_source (server | ntp | override)ntp_server (when time_source=ntp)now_lunartarget_lunarDo not continue with execution when any required field is unknown and may change the target time materially.