datetime/2
Module: builtins
datetime/2
— gets the local system date and time
time/1
— gets the local system time
date/1
— gets the local date
gm_datetime/2
— gets the Greenwich mean time(UTC)
date_less/2
— compares two dates
date_pattern/4
— describes the pattern term for date display
set_date_pattern/1
— changes the pattern term for date display
valid_date/[1,3]
— determines if a date pattern represents a valid date
time_less/2
— compares two times
datetime_less/2
— compares two datetimes
FORMS
datetime(Date, Time)
time(Time)
date(Date)
gm_datetime(Date, Time)
date_less(Date0, Date1)
date_pattern(YY,MM,DD,YY/MM/DD)
set_date_pattern(AA/BB/CC)
valid_date(Date)
valid_date(YY,MM,DD)
time_less(Time0, Time1)
datetime_less(DateTime0, DateTime1)
DESCRIPTION
date_time(Date, Time)
obtains the current system local Date
and Time
from the same call to the OS/system clock.
gm_date_time(Date, Time)
obtains the current Greenwich UTC Date
and Time
from the same call to the OS/system clock.
date/1
and time/1
are effectively defined by:
date(Date) :- date_time(Date, _).
time(Time) :- date_time(_, Time).
date_less(Date0, Date1)
holds if and only if Date0 and Date1 are date terms of the form YY/MM/DD
and Date0 represents a date earlier than Date1.
date_pattern/4
is a single fact which establishes the pattern term to be used for displaying dates. The default value is:
date_pattern(YY,MM,DD,YY/MM/DD).
set_date_pattern/1
is used to change the pattern term to be used for displaying dates, that is, to change the fact defining date_pattern/4
. It should be passed a term AA/BB/CC representing the desired date display expression, where the values of AA,BB,CC are atoms beginning with y
, m
, and d
in the desired order. [Note that
set_date_pattern(m/d/y), set_date_pattern(mm/dd/yy)
, and set_date_pattern(month/day/year)
would all set the same date pattern display.]
valid_date(Date)
is true if and only if Date represents a meaningful date, that is, whether the numerical values of YY,MM,DD
(whatever the date_pattern) are in the correct ranges. If PP is a pattern made out of Y,M,D and ‘-‘ matches the current date_pattern [e.g., PP is M-D-Y], then PP is an acceptable input to valid_date/1
.
valid_date/1
is defined in terms of valid_date/3
by:
valid_date(Date)
:-
date_pattern(YY,MM,DD,Date),
valid_date(YY,MM,DD).
time_less(Time0, Time1)
holds if and only if Time0
and Time1
are time terms of the form HH:MM:SS
and Time0
represents a time earlier than Time1
.
datetime_less(DateTime0, DateTime1)
holds if and only if DateTime0
and DateTime1
are time terms of the forms
(Date0,Time0), (Date1,Time1)
and DateTime0
precedes or equals DateTime1
.
EXAMPLES
?- time(T).
T=12:47:57
yes.
?- date(D).
D=2018/10/20
yes.
?- datetime(D,T).
D=2018/10/20
T=12:48:16
yes.
?- gm_datetime(D,T).
D=2018/10/20
T=18:48:26
yes.
?- date_pattern(YY,MM,DD,YY/MM/DD).
YY=YY
MM=MM
DD=DD
yes.
?- set_date_pattern(a/b/c).
no.
?- set_date_pattern(y/m/d).
yes.
?- set_date_pattern(yy/mm/dd).
yes.
?- date_pattern(YY,MM,DD,P).
YY=YY
MM=MM
DD=DD
P=YY/MM/DD
yes.
?- set_date_pattern(month/day/year).
yes.
?- date_pattern(YY,MM,DD,P).
YY=YY
MM=MM
DD=DD
P=MM/DD/YY
yes.
?- valid_date(2/29/1916).
yes.
?- valid_date(1-15-2001).
yes.
?- valid_date(2/29/1917).
no.
?- set_date_pattern(year/month/day).
yes.
?- date_pattern(YY,MM,DD,P).
YY=YY
MM=MM
DD=DD
P=YY/MM/DD
?- time_less(9:22:01, 13:48:53).
yes.
?- time_less(13:48:53, 12:12:14).
no.
?- datetime_less((2000/3/14,9:22:01), (2000/3/14,13:48:53)).
yes.
?- datetime_less((2000/1/14,9:22:01), (2000/3/14,1:48:53)).
yes.