{-# LANGUAGE Safe #-} -- Note: this file derives from old-locale:System.Locale.hs, which is copyright (c) The University of Glasgow 2001 module Data.Time.Format.Locale ( TimeLocale (..), defaultTimeLocale, iso8601DateFormat, rfc822DateFormat, ) where import Data.Time.LocalTime.Internal.TimeZone data TimeLocale = TimeLocale { -- | full and abbreviated week days, starting with Sunday wDays :: [(String, String)] , -- | full and abbreviated months months :: [(String, String)] , -- | AM\/PM symbols amPm :: (String, String) , -- | formatting strings dateTimeFmt, dateFmt, timeFmt, time12Fmt :: String , -- | time zones known by name knownTimeZones :: [TimeZone] } deriving (Eq, Ord, Show) -- | Locale representing American usage. -- -- 'knownTimeZones' contains only the ten time-zones mentioned in RFC 802 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. defaultTimeLocale :: TimeLocale defaultTimeLocale = TimeLocale { wDays = [ ("Sunday", "Sun") , ("Monday", "Mon") , ("Tuesday", "Tue") , ("Wednesday", "Wed") , ("Thursday", "Thu") , ("Friday", "Fri") , ("Saturday", "Sat") ] , months = [ ("January", "Jan") , ("February", "Feb") , ("March", "Mar") , ("April", "Apr") , ("May", "May") , ("June", "Jun") , ("July", "Jul") , ("August", "Aug") , ("September", "Sep") , ("October", "Oct") , ("November", "Nov") , ("December", "Dec") ] , amPm = ("AM", "PM") , dateTimeFmt = "%a %b %e %H:%M:%S %Z %Y" , dateFmt = "%m/%d/%y" , timeFmt = "%H:%M:%S" , time12Fmt = "%I:%M:%S %p" , knownTimeZones = [ TimeZone 0 False "UT" , TimeZone 0 False "GMT" , TimeZone (-5 * 60) False "EST" , TimeZone (-4 * 60) True "EDT" , TimeZone (-6 * 60) False "CST" , TimeZone (-5 * 60) True "CDT" , TimeZone (-7 * 60) False "MST" , TimeZone (-6 * 60) True "MDT" , TimeZone (-8 * 60) False "PST" , TimeZone (-7 * 60) True "PDT" ] } {-# DEPRECATED iso8601DateFormat "use \"Data.Time.Format.ISO8601\" functions instead" #-} {- | Construct format string according to . 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-DD/T/HH:MM:SS/@ @ -} iso8601DateFormat :: Maybe String -> String iso8601DateFormat mTimeFmt = "%Y-%m-%d" ++ case mTimeFmt of Nothing -> "" Just fmt -> 'T' : fmt -- | Format string according to . rfc822DateFormat :: String rfc822DateFormat = "%a, %_d %b %Y %H:%M:%S %Z"