time-1.9.3: A time library
Safe Haskell Safe-Inferred
Language Haskell2010

Data.Time.Format

Synopsis

UNIX-style formatting

class FormatTime t Source #

Minimal complete definition

formatCharacter

Instances

Instances details
FormatTime CalendarDiffDays Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime Day Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime DayOfWeek Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime DiffTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime NominalDiffTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime UTCTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime UniversalTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime CalendarDiffTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime TimeZone Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime TimeOfDay Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime LocalTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

FormatTime ZonedTime Source #
Instance details

Defined in Data.Time.Format.Format.Instances

formatTime :: FormatTime t => TimeLocale -> String -> t -> String Source #

Substitute various time-related information for each %-code in the string, as per formatCharacter .

The general form is %<modifier><width><alternate><specifier> , where <modifier> , <width> , and <alternate> are optional.

<modifier>

glibc-style modifiers can be used before the specifier (here marked as z ):

%-z
no padding
%_z
pad with spaces
%0z
pad with zeros
%^z
convert to upper case
%#z
convert to lower case (consistently, unlike glibc)

<width>

Width digits can also be used after any modifiers and before the specifier (here marked as z ), for example:

%4z
pad to 4 characters (with default padding character)
%_12z
pad with spaces to 12 characters

<alternate>

An optional E character indicates an alternate formatting. Currently this only affects %Z and %z .

%Ez
alternate formatting

<specifier>

For all types (note these three are done by formatTime , not by formatCharacter ):

%%
%
%t
tab
%n
newline

TimeZone

For TimeZone (and ZonedTime and UTCTime ):

%z
timezone offset in the format ±HHMM
%Ez
timezone offset in the format ±HH:MM
%Z
timezone name (or else offset in the format ±HHMM )
%EZ
timezone name (or else offset in the format ±HH:MM )

LocalTime

For LocalTime (and ZonedTime and UTCTime and UniversalTime ):

%c
as dateTimeFmt locale (e.g. %a %b %e %H:%M:%S %Z %Y )

TimeOfDay

For TimeOfDay (and LocalTime and ZonedTime and UTCTime and UniversalTime ):

%R
same as %H:%M
%T
same as %H:%M:%S
%X
as timeFmt locale (e.g. %H:%M:%S )
%r
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 .
%Q
decimal point and fraction of second, up to 12 second decimals, without trailing zeros. For a whole number of seconds, %Q omits the decimal point unless padding is specified.

UTCTime and ZonedTime

For UTCTime and ZonedTime :

%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 .

DayOfWeek

For DayOfWeek (and Day and LocalTime and ZonedTime and UTCTime and UniversalTime ):

%u
day of week number for Week Date format, 1 (= Monday) - 7 (= Sunday)
%w
day of week number, 0 (= Sunday) - 6 (= Saturday)
%a
day of week, short form ( snd from wDays locale ), Sun - Sat
%A
day of week, long form ( fst from wDays locale ), Sunday - Saturday

Day

For Day (and LocalTime and ZonedTime and UTCTime and UniversalTime ):

%D
same as %m/%d/%y
%F
same as %Y-%m-%d
%x
as dateFmt locale (e.g. %m/%d/%y )
%Y
year, no padding. Note %0Y and %_Y pad to four chars
%y
year of century, 0-padded to two chars, 00 - 99
%C
century, no padding. Note %0C and %_C pad to two chars
%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
%f
century for Week Date format, no padding. Note %0f and %_f pad to two chars
%V
week of year for Week Date format, 0-padded to two chars, 01 - 53
%U
week of year where weeks start on Sunday (as sundayStartWeek ), 0-padded to two chars, 00 - 53
%W
week of year where weeks start on Monday (as mondayStartWeek ), 0-padded to two chars, 00 - 53

Duration types

The specifiers for DiffTime , NominalDiffTime , CalendarDiffDays , and CalendarDiffTime are semantically separate from the other types. Specifiers on negative time differences will generally be negative (think rem rather than mod ).

NominalDiffTime and DiffTime

Note that a "minute" of DiffTime is simply 60 SI seconds, rather than a minute of civil time. Use NominalDiffTime to work with civil time, ignoring any leap seconds.

For NominalDiffTime and DiffTime :

%w
total whole weeks
%d
total whole days
%D
whole days of week
%h
total whole hours
%H
whole hours of day
%m
total whole minutes
%M
whole minutes of hour
%s
total whole seconds
%Es
total seconds, with decimal point and up to <width> (default 12) decimal places, without trailing zeros. For a whole number of seconds, %Es omits the decimal point unless padding is specified.
%0Es
total seconds, with decimal point and <width> (default 12) decimal places.
%S
whole seconds of minute
%ES
seconds of minute, with decimal point and up to <width> (default 12) decimal places, without trailing zeros. For a whole number of seconds, %ES omits the decimal point unless padding is specified.
%0ES
seconds of minute as two digits, with decimal point and <width> (default 12) decimal places.

CalendarDiffDays

For CalendarDiffDays (and CalendarDiffTime ):

%y
total years
%b
total months
%B
months of year
%w
total weeks, not including months
%d
total days, not including months
%D
days of week

CalendarDiffTime

For CalendarDiffTime :

%h
total hours, not including months
%H
hours of day
%m
total minutes, not including months
%M
minutes of hour
%s
total whole seconds, not including months
%Es
total seconds, not including months, with decimal point and up to <width> (default 12) decimal places, without trailing zeros. For a whole number of seconds, %Es omits the decimal point unless padding is specified.
%0Es
total seconds, not including months, with decimal point and <width> (default 12) decimal places.
%S
whole seconds of minute
%ES
seconds of minute, with decimal point and up to <width> (default 12) decimal places, without trailing zeros. For a whole number of seconds, %ES omits the decimal point unless padding is specified.
%0ES
seconds of minute as two digits, with decimal point and <width> (default 12) decimal places.

UNIX-style parsing

parseTimeM Source #

Arguments

:: ( MonadFail m, ParseTime t)
=> Bool

Accept leading and trailing whitespace?

-> TimeLocale

Time locale.

-> String

Format string.

-> String

Input string.

-> m t

Return the time value, or fail if the input could not be parsed using the given format.

Parses a time value given a format string. Supports the same %-codes as formatTime , including %- , %_ and %0 modifiers, however padding widths are not supported. Case is not significant in the input string. Some variations in the input are accepted:

%z
accepts any of ±HHMM or ±HH:MM .
%Z
accepts any string of letters, or any of the formats accepted by %z .
%0Y
accepts exactly four digits.
%0G
accepts exactly four digits.
%0C
accepts exactly two digits.
%0f
accepts exactly two digits.

For example, to parse a date in YYYY-MM-DD format, while allowing the month and date to have optional leading zeros (notice the - modifier used for %m and %d ):

Prelude Data.Time> parseTimeM True defaultTimeLocale "%Y-%-m-%-d" "2010-3-04" :: Maybe Day
Just 2010-03-04

parseTimeOrError Source #

Arguments

:: ParseTime t
=> Bool

Accept leading and trailing whitespace?

-> TimeLocale

Time locale.

-> String

Format string.

-> String

Input string.

-> t

The time value.

Parse a time value given a format string. Fails if the input could not be parsed using the given format. See parseTimeM for details.

readSTime Source #

Arguments

:: ParseTime t
=> Bool

Accept leading whitespace?

-> TimeLocale

Time locale.

-> String

Format string

-> ReadS t

Parse a time value given a format string. See parseTimeM for details.

readPTime Source #

Arguments

:: ParseTime t
=> Bool

Accept leading whitespace?

-> TimeLocale

Time locale.

-> String

Format string

-> ReadP t

Parse a time value given a format string. See parseTimeM for details.

parseTime Source #

Arguments

:: ParseTime t
=> TimeLocale

Time locale.

-> String

Format string.

-> String

Input string.

-> Maybe t

The time value, or Nothing if the input could not be parsed using the given format.

Deprecated: use "parseTimeM True" instead

readTime Source #

Arguments

:: ParseTime t
=> TimeLocale

Time locale.

-> String

Format string.

-> String

Input string.

-> t

The time value.

Deprecated: use "parseTimeOrError True" instead

readsTime Source #

Arguments

:: ParseTime t
=> TimeLocale

Time locale.

-> String

Format string

-> ReadS t

Deprecated: use "readSTime True" instead

class ParseTime t Source #

The class of types which can be parsed given a UNIX-style time format string.

Minimal complete definition

parseTimeSpecifier , buildTime

Instances

Instances details
ParseTime CalendarDiffDays Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime Day Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime DiffTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime NominalDiffTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime UTCTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime UniversalTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime CalendarDiffTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime TimeZone Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime TimeOfDay Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime LocalTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

ParseTime ZonedTime Source #
Instance details

Defined in Data.Time.Format.Parse.Instances

Locale

defaultTimeLocale :: TimeLocale Source #

Locale representing American usage.

knownTimeZones contains only the ten time-zones mentioned in RFC 822 sec. 5: "UT", "GMT", "EST", "EDT", "CST", "CDT", "MST", "MDT", "PST", "PDT". Note that the parsing functions will regardless parse "UTC", single-letter military time-zones, and +HHMM format.

iso8601DateFormat :: Maybe String -> String Source #

Construct format string according to ISO-8601 .

The Maybe String argument allows to supply an optional time specification. E.g.:

iso8601DateFormat Nothing            == "%Y-%m-%d"           -- i.e. YYYY-MM-DD
iso8601DateFormat (Just "%H:%M:%S")  == "%Y-%m-%dT%H:%M:%S"  -- i.e. YYYY-MM-DDTHH:MM:SS