4.35.2.2 Time and date predicates
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Built-in Predicates
        • Operating System Interaction
          • Dealing with time and date
            • Time and date predicates
              • get_time/1
              • stamp_date_time/3
              • date_time_stamp/2
              • date_time_value/3
              • format_time/3
              • format_time/4
              • parse_time/2
              • parse_time/3
              • day_of_the_week/2
    • Packages
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'