date
import "date" as date
Provides date and time handling using Unix timestamps internally. Dates are represented with millisecond precision and support creation, formatting, parsing, and accessing or modifying date components.
Date(timestamp_ms=null, timestamp_s=null, date=null, year=null, month=null, ...)
Creates a new date object.
Dates can be created from timestamps:
let a = date.Date(timestamp_ms=0)
term.log(a.to_string()) # "1970-01-01 00:00:00"
let b = date.Date(timestamp_s=1)
term.log(b.to_string()) # "1970-01-01 00:00:01"
A date can also be copied from another Date object:
let a = date.Date(timestamp_s=100)
let b = date.Date(date=a)
term.log(b.unix()) # 100
Individual date components can be provided when constructing a date. Missing components use the default values:
let d = date.Date(year=2026, month=7, day=28)
term.log(d.to_string()) # "2026-07-28 00:00:00"
Date.now()
Returns a Date representing the current time.
let now = date.Date.now()
term.log(now.to_string())
Date.now_utc()
Returns the current UTC time.
Currently this is equivalent to Date.now() because dates are stored internally as UTC timestamps.
Date.from_string(str, fmt="%Y-%m-%d %H:%M:%S")
Creates a Date by parsing a formatted date string.
let d = date.Date.from_string("2026-07-28 12:30:00")
term.log(d.year) # 2026
term.log(d.month) # 7
term.log(d.day) # 28
The format string uses strftime-style format specifiers:
let d = date.Date.from_string("28/07/2026", "%d/%m/%Y")
term.log(d.to_string()) # "2026-07-28 00:00:00"
date.unix()
Returns the date as a Unix timestamp in seconds.
let d = date.Date(timestamp_s=1000)
term.log(d.unix()) # 1000
date.unix_ms()
Returns the date as a Unix timestamp in milliseconds.
let d = date.Date(timestamp_ms=1000)
term.log(d.unix_ms()) # 1000
Date properties
The following properties are available:
yearmonthdayhourminutesecondday_of_weekday_of_year
Example:
let d = date.Date(year=2026, month=7, day=28, hour=15)
term.log(d.year) # 2026
term.log(d.month) # 7
term.log(d.day) # 28
term.log(d.hour) # 15
day_of_week returns the weekday number, and day_of_year returns the day number within the year.
date.to_string(fmt="%Y-%m-%d %H:%M:%S")
Formats the date as a UTC string.
let d = date.Date(year=2026, month=7, day=28)
term.log(d.to_string())
# "2026-07-28 00:00:00"
term.log(d.to_string("%d/%m/%Y"))
# "28/07/2026"
date.to_local_string(fmt="%Y-%m-%d %H:%M:%S")
Formats the date using the local timezone.
let d = date.Date.now()
term.log(d.to_local_string())
date.http_date()
Formats the date using the HTTP-date format.
let d = date.Date(timestamp_s=0)
term.log(d.http_date())
# "Thu, 01 Jan 1970 00:00:00 GMT"
Date modification
The date components can be changed using setters:
set_year(value)set_month(value)set_day(value)set_hour(value)set_minute(value)set_second(value)
Example:
let d = date.Date(year=2026, month=1, day=1)
d.set_month(7)
d.set_day(28)
term.log(d.to_string())
# "2026-07-28 00:00:00"
Date.monotonic()
Returns the current monotonic clock value.
Unlike normal timestamps, monotonic time is not affected by system clock changes and is intended for measuring durations.
let start = date.Date.monotonic()
# do some work
let elapsed = date.Date.monotonic() - start
Format strings
Formatting and parsing functions use strftime-style format codes.
Common format codes:
| Code | Meaning | Example |
|---|---|---|
%Y |
Four digit year | 2026 |
%m |
Month number | 07 |
%d |
Day of month | 28 |
%H |
Hour (24-hour clock) | 15 |
%M |
Minute | 30 |
%S |
Second | 00 |
%a |
Short weekday name | Tue |
%b |
Short month name | Jul |
Timezones
Date objects store timestamps as UTC internally.
Functions ending in _utc operate directly on UTC values, while local formatting functions apply the system timezone.