Format a
FormatTime instance value according to a template
string.
These formatting template codes are intended to be compatible with
glibc strftime() function, following
Data.Time.Format, which follows
formatCalendarTime from
the
old-time package. Codes which differ from
strftime() are marked as
EXTENSION.
Show/Parse template string spec
For all types
- %z RFC 822/ISO 8601:1988 style numeric time zone
(e.g., "-0600" or "+0100")
- %N ISO 8601 style numeric time zone (e.g.,
"-06:00" or "+01:00") EXTENSION
- %Z timezone name
- %c The preferred calendar time representation for
the current locale. As dateTimeFmt locale (e.g.
%a %b %e %H:%M:%S %Z %Y)
- %T same as %H:%M:%S
- %X The preferred time of day representation for
the current locale. As timeFmt locale (e.g.
%H:%M:%S)
- %r The complete calendar time using the AM/PM
format of the current locale. As time12Fmt locale
(e.g. %I:%M:%S %p)
- %P day-half of day from (amPm
locale), converted to lowercase, "am",
"pm"
- %p day-half of day from (amPm
locale), "AM", "PM"
- %H hour of day (24-hour), 0-padded to two chars,
"00"–"23"
- %k hour of day (24-hour), space-padded to two
chars, " 0"–"23"
- %I hour of day-half (12-hour), 0-padded to two
chars, "01"–"12"
- %l hour of day-half (12-hour), space-padded to two
chars, " 1"–"12"
- %M minute of hour, 0-padded to two chars,
"00"–"59"
- %S second of minute (without decimal part),
0-padded to two chars, "00"–"60"
- %q picosecond of second, 0-padded to twelve chars,
"000000000000"–"999999999999". EXTENSION
- %v microsecond of second, 0-padded to six chars,
"000000"–"999999". EXTENSION
- %Q decimal point and fraction of second, up to 6
second decimals, without trailing zeros. For a whole number of
seconds, %Q produces the empty string.
EXTENSION
- %s number of whole seconds since the Unix epoch.
For times before the Unix epoch, this is a negative number. Note that
in %s.%q and %s%Q the decimals are
positive, not negative. For example, 0.9 seconds before the Unix epoch
is formatted as "-1.1" with %s%Q.
- %F same as %Y-%m-%d
- %x as dateFmt locale (e.g.
%m/%d/%y)
- %Y year, no padding.
- %y year of century, 0-padded to two chars,
"00"–"99"
- %C century, no padding.
- %B month name, long form (fst from
months locale),
"January"–"December"
- %b, %h month name, short form (snd
from months locale),
"Jan"–"Dec"
- %m month of year, 0-padded to two chars,
"01"–"12"
- %d day of month, 0-padded to two chars,
"01"–"31"
- %e day of month, space-padded to two chars, "
1"–"31"
- %j day of year, 0-padded to three chars,
"001"–"366"
- %G year for Week Date format, no padding.
- %g year of century for Week Date format, 0-padded
to two chars, "00"–"99"
- %f century for Week Date format, no padding.
EXTENSION
- %V week of year for Week Date format, 0-padded to
two chars, "01"–"53"
- %u day of week for Week Date format,
"1"–"7"
- %a day of week, short form (snd from
wDays locale), "Sun"–"Sat"
- %A day of week, long form (fst from
wDays locale),
"Sunday"–"Saturday"
- %U week of year where weeks start on Sunday (as
sundayStartWeek), 0-padded to two chars,
"00"–"53"
- %w day of week number, "0" (= Sunday) –
"6" (= Saturday)
- %W week of year where weeks start on Monday (as
mondayStartWeek), 0-padded to two chars,
"00"–"53"
Examples
> formatTime defaultTimeLocale "%Y-%m-%dT%H:%M:%S%N" $ mkUTCTime 2015 1 15 12 34 56.78
"2015-01-15T12:34:56+00:00"
> formatTime defaultTimeLocale "%a, %_d %b %Y %H:%M:%S %Z" $ mkUTCTime 2015 1 15 12 34 56.78
"Thu, 15 Jan 2015 12:34:56 UTC"
YYYY-MM-DD hh:mm:ss.000000
> formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S.%v" $ mkUTCTime 2015 1 15 12 34 56.78
"2015-01-15 12:34:56.780000"