datesï
The date object implements some useful calendar date predicates.
It also provides portable predicates for date-time handling, including:
Unix epoch conversions (
date_time_to_unix/2,unix_to_date_time/2)date-time arithmetic with durations (
add_duration/3,subtract_duration/3,duration_between/3)UTC/local conversion using explicit offsets (
utc_to_local/3,local_to_utc/3)date-time formatting with explicit offsets (
format_date_time/4)calendar utilities (
day_of_year/2,week_of_year_iso/2,weekday/2)reverse and positional calendar utilities (
day_of_year_date/3,month_weekday_date/5)date-time normalization and validation (
normalize_date_time/2,valid_date_time/1)date-time comparison (
before/2,after/2,same_instant/2,compare_date_time/3)
The duration predicates accept two duration representations:
duration(Days, Hours, Minutes, Seconds)â a fixed-length duration converted to secondsduration(Years, Months, Days, Hours, Minutes, Seconds)â a calendar-aware period where the year and month delta is applied first using calendar arithmetic, clamping the day to the last valid day of the resulting month when necessary (e.g. adding one month to January 31 gives February 28 or 29 depending on the year), with the remaining day and time delta applied via fixed-length arithmetic. Theduration_between/3predicate returns this form when called with a 6-arity skeleton such asduration(Yr, Mo, Da, Hr, Mi, Se).
Date-time values are represented using the date_time/6 compound
term:
date_time(Year, Month, Day, Hours, Minutes, Seconds)
The format_date_time/4 predicate currently supports the named
formats rfc3339, iso8601, atom, rfc2822, rfc5322,
rss, http_date, rfc1123, unix_date, common_log,
date_short, date_medium, date_long, date_full,
time_short, time_medium, time_long, time_full,
date_time_short, date_time_medium, date_time_long, and
date_time_full.
The explicit offset argument is given in seconds. Formats that include
numeric offsets require offsets representable in whole minutes. The
http_date and rfc1123 formats always normalize the output to
GMT.
The style presets are currently English-only presentation formats:
date_short->2026-04-08date_medium->8 Apr 2026date_long->April 8, 2026date_full->Tuesday, April 8, 2026time_short->13:45time_medium->13:45:30time_long->13:45:30 +01:00time_full->1:45:30 PM +01:00date_time_short->2026-04-08 13:45date_time_medium->8 Apr 2026 13:45:30date_time_long->April 8, 2026 1:45:30 PM +01:00date_time_full->Tuesday, April 8, 2026 1:45:30 PM +01:00
The time object implements some useful time predicates.
Please note that the functionality of these objects depends on the chosen Prolog support for accessing the operating system time and date.
API documentationï
Open the ../../apis/library_index.html#dates link in a web browser.
Loadingï
To load all entities in this library, load the loader.lgt utility
file:
| ?- logtalk_load(dates(loader)).
Testingï
To test this library predicates, load the tester.lgt file:
| ?- logtalk_load(dates(tester)).