Skip to content

p-datetime

The datetime module provides date/time creation, extraction, formatting, and arithmetic functions. All timestamps are millisecond-precision Unix epoch values.

use p-datetime as dt

Returns the current timestamp in milliseconds.

Returns the timestamp for the start of today (midnight, local time).

Returns the current Unix timestamp in seconds (integer).

use p-datetime as dt
const t be dt.now[] -- e.g. 1712534400000
const s be dt.timestamp[] -- e.g. 1712534400

create[year; month; day; hour; minute; second; ms]

Section titled “create[year; month; day; hour; minute; second; ms]”

Creates a timestamp from local date/time components. Only year is required; others default to sensible values (month=1, day=1, hour/minute/second/ms=0).

use p-datetime as dt
const t be dt.create[2026; 4; 8]
const t2 be dt.create[2026; 4; 8; 14; 30; 0; 0]

utccreate[year; month; day; hour; minute; second; ms]

Section titled “utccreate[year; month; day; hour; minute; second; ms]”

Same as create but interprets components as UTC.

use p-datetime as dt
const t be dt.utccreate[2026; 4; 8; 0; 0; 0; 0]

Parses an ISO 8601 date string and returns a timestamp.

use p-datetime as dt
const t be dt.fromiso[///2026-04-08T00:00:00Z///]

These functions extract date/time components in the local timezone.

Returns the full year (e.g. 2026).

Returns the month (1–12).

Returns the day of the month (1–31).

Returns the day of the week (0=Sunday, 6=Saturday).

Returns the respective time component.

use p-datetime as dt
const t be dt.now[]
console.log[dt.year[t]] -- e.g. 2026
console.log[dt.month[t]] -- e.g. 4
console.log[dt.weekday[t]] -- e.g. 3 (Wednesday)

Same as local extraction but in UTC.

utcyear[t] / utcmonth[t] / utcday[t] / utcweekday[t]

Section titled “utcyear[t] / utcmonth[t] / utcday[t] / utcweekday[t]”

utchour[t] / utcminute[t] / utcsecond[t] / utcms[t]

Section titled “utchour[t] / utcminute[t] / utcsecond[t] / utcms[t]”
use p-datetime as dt
const t be dt.now[]
console.log[dt.utchour[t]] -- UTC hour

Extract components for a specific IANA timezone.

tzyear[t; tz] / tzmonth[t; tz] / tzday[t; tz] / tzweekday[t; tz]

Section titled “tzyear[t; tz] / tzmonth[t; tz] / tzday[t; tz] / tzweekday[t; tz]”

tzhour[t; tz] / tzminute[t; tz] / tzsecond[t; tz]

Section titled “tzhour[t; tz] / tzminute[t; tz] / tzsecond[t; tz]”
use p-datetime as dt
const t be dt.now[]
console.log[dt.tzhour[t; ///America/New_York///]]
console.log[dt.tzhour[t; ///Asia/Tokyo///]]

Returns the ISO 8601 string representation.

use p-datetime as dt
dt.toiso[dt.now[]] -- e.g. "2026-04-08T05:00:00.000Z"

Returns a locale-formatted date/time string.

Returns a locale-formatted date string (date only).

Returns a locale-formatted time string (time only).

Returns a formatted string for a specific timezone and locale.

use p-datetime as dt
const t be dt.now[]
dt.tolocale[t; ///en-US///]
dt.todate[t; ///ja-JP///]
dt.format[t; ///Asia/Tokyo///; ///ja-JP///]

Adds n milliseconds.

Adds n seconds.

Adds n minutes.

Adds n hours.

Adds n days.

use p-datetime as dt
const t be dt.now[]
const tomorrow be dt.adddays[t; 1]
const later be dt.addhours[t; 3]

Returns the difference in milliseconds (a - b).

Returns the difference in days.

Returns the difference in hours.

Returns the difference in minutes.

Returns the difference in seconds.

use p-datetime as dt
const a be dt.create[2026; 4; 10]
const b be dt.create[2026; 4; 8]
console.log[dt.diffdays[a; b]] -- 2

Returns the timezone offset in minutes for the given timestamp (or now if omitted).

Returns the local IANA timezone name (e.g. "Asia/Tokyo").

use p-datetime as dt
console.log[dt.localtz[]] -- e.g. "Asia/Tokyo"
console.log[dt.offset[]] -- e.g. -540