Availability:built-in
format_time(+Out,
+Format, +StampOrDateTime)Modelled after POSIX strftime(), using GNU extensions. Out is
a destination as specified with with_output_to/2. Format
is an atom or string with the following conversions. Conversions start
with a percent (%) character.135Descriptions
taken from Linux Programmer's Manual
StampOrDateTime is either a numeric time-stamp, a term
date(Y,M,D,H,M,S,O,TZ,DST)
or a term date(Y,M,D)
.
a
The abbreviated weekday name according to the current locale. Use
format_time/4
for POSIX locale.
A
The full weekday name according to the current locale. Use
format_time/4
for POSIX locale.
b
The abbreviated month name according to the current locale. Use
format_time/4
for POSIX locale.
B
The full month name according to the current locale. Use
format_time/4
for POSIX locale.
c
The preferred date and time representation for the current locale.
C
The century number (year/100) as a 2-digit integer.
d
The day of the month as a decimal number (range 01 to 31).
D
Equivalent to %m/%d/%y. (For Americans only. Americans should note that
in other countries %d/%m/%y is rather common. This means that in an
international context this format is ambiguous and should not be used.)
e
Like %d, the day of the month as a decimal number, but a leading zero is
replaced by a space.
E
Modifier. Not implemented.
f
Number of microseconds. The f
can be prefixed by an integer
to print the desired number of digits. E.g., %3f
prints
milliseconds. This format is not covered by any standard, but available
with different format specifiers in various incarnations of the
strftime() function.
F
Equivalent to %Y-%m-%d (the ISO 8601 date format).
g
Like %G, but without century, i.e., with a 2-digit year (00-99).
G
The ISO 8601 year with century as a decimal number. The 4-digit year
corresponding to the ISO week number (see %V). This has the same format
and value as %y, except that if the ISO week number belongs to the
previous or next year, that year is used instead.
V
The ISO 8601:1988 week number of the current year as a decimal number,
range 01 to 53, where week 1 is the first week that has at least 4 days
in the current year, and with Monday as the first day of the week. See
also %U and %W.
h
Equivalent to %b.
H
The hour as a decimal number using a 24-hour clock (range 00 to 23).
I
The hour as a decimal number using a 12-hour clock (range 01 to 12).
j
The day of the year as a decimal number (range 001 to 366).
k
The hour (24-hour clock) as a decimal number (range 0 to 23); single
digits are preceded by a blank. (See also %H.)
l
The hour (12-hour clock) as a decimal number (range 1 to 12); single
digits are preceded by a blank. (See also %I.)
m
The month as a decimal number (range 01 to 12).
M
The minute as a decimal number (range 00 to 59).
n
A newline character.
O
Modifier to select locale-specific output. Not implemented.
p
Either `AM' or `PM' according to the given time value, or the
corresponding strings for the current locale. Noon is treated as `pm'
and midnight as `am'.136Despite
the above clain, some locales yield am
or pm
in lower case.
P
Like %p but in lowercase: `am' or `pm' or a corresponding string for the
current locale.
r
The time in a.m. or p.m. notation. In the POSIX locale this is
equivalent to `%I:%M:%S %p'.
R
The time in 24-hour notation (%H:%M). For a version including the
seconds, see %T below.
s
The number of seconds since the Epoch, i.e., since 1970-01-01 00:00:00
UTC.
S
The second as a decimal number (range 00 to 60). (The range is up to 60
to allow for occasional leap seconds.)
t
A tab character.
T
The time in 24-hour notation (%H:%M:%S).
u
The day of the week as a decimal, range 1 to 7, Monday being 1. See also %w.
U
The week number of the current year as a decimal number, range 00 to 53,
starting with the first Sunday as the first day of week 01. See also %V
and %W.
w
The day of the week as a decimal, range 0 to 6, Sunday being 0. See also %u.
W
The week number of the current year as a decimal number, range 00 to 53,
starting with the first Monday as the first day of week 01.
x
The preferred date representation for the current locale without the
time.
X
The preferred time representation for the current locale without the
date.
y
The year as a decimal number without a century (range 00 to 99).
Y
The year as a decimal number including the century.
z
The timezone as hour offset from GMT using the format HHmm. Required to
emit RFC822-conforming dates (using
'%a, %d %b %Y %T %z'
). Our
implementation supports
%:z
, which modifies the output to HH:mm as required by
XML-Schema. Note that both notations are valid in ISO 8601. The sequence %:z
is compatible to the GNU date(1) command.
Z
The timezone or name or abbreviation.
+
The date and time in date(1) format.
%
A literal `%' character.
The table below gives some format strings for popular time
representations. RFC1123 is used by HTTP. The full implementation of
http_timestamp/2
as available from library(http/http_header)
is here.
http_timestamp(Time, Atom) :-
stamp_date_time(Time, Date, 'UTC'),
format_time(atom(Atom),
'%a, %d %b %Y %T GMT',
Date, posix).
Standard | Format string |
xsd | '%FT%T%:z' |
ISO8601 | '%FT%T%z' |
RFC822 | '%a, %d %b %Y %T %z' |
RFC1123 | '%a, %d %b %Y %T GMT' |