Skip to the content.

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:

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:

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.

Next