Skip to content

Datetime

Datetime represents a point in time (year, month, day, hour, minute, second). Values are local-timezone by default, matching Apex’s Datetime.newInstance semantics.

FactoryReturnsNotes
Datetime.of(year, month, day, hour, minute, second)DatetimeAll args Int, local time
Datetime.now()DatetimeCurrent local datetime
Datetime.ofUtc(year, month, day, hour, minute, second)DatetimeAll args Int, UTC time
Datetime.nowUtc()DatetimeCurrent datetime (UTC)
Datetime.parse(s: String)Option<Datetime>Accepts yyyy-MM-dd HH:mm:ss only; None on invalid input
MethodReturnsNotes
.year()IntLocal year component
.month()IntLocal month component
.day()IntLocal day component
.hour()IntLocal hour component
.minute()IntLocal minute component
.second()IntLocal second component
.toDate()DateDrops time component (local)
.toString()StringFormat: yyyy-MM-dd HH:mm:ss (local time)
.yearUtc()IntUTC year component
.monthUtc()IntUTC month component
.dayUtc()IntUTC day component
.hourUtc()IntUTC hour component
.minuteUtc()IntUTC minute component
.secondUtc()IntUTC second component
.toDateUtc()DateDrops time component (UTC)
.toStringUtc()StringFormat: yyyy-MM-dd HH:mm:ss (UTC)
.add(years:, months:, days:, hours:, minutes:, seconds:)DatetimeAll args optional (default 0), at least one required. Negative values subtract.
.format(DateFormat)StringFormat the datetime using a DateFormat value.

Datetime.parse(s: String) returns Option<Datetime>. Only the format yyyy-MM-dd HH:mm:ss is accepted (matching Apex’s Datetime.valueOf). Any other format returns None.

let dt = Datetime.parse(s: "2024-03-15 10:30:00") // Some(value: 2024-03-15 10:30:00)
let x = Datetime.parse(s: "2024-03-15T10:30:00Z") // None

datetime.add(...) returns a new Datetime shifted by the given units:

datetime.add(hours: 2)
datetime.add(days: 1, hours: -3)
datetime.add(years: 1, months: 2, days: 3, hours: 4)

==, !=, <, <=, >, >=. Direct datetime comparison.