----------------------------------------------------------------------------- -- | -- Module : System.Locale -- Copyright : (c) The University of Glasgow 2001 -- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : portable -- -- This module provides the ability to adapt to local conventions. -- At present, it supports only time and date information as used by -- System.Time.calendarTimeToString from the System.Time module in the -- old-time package. -- ----------------------------------------------------------------------------- module System.Locale ( TimeLocale(..) , defaultTimeLocale , iso8601DateFormat , rfc822DateFormat ) where import Prelude data TimeLocale = TimeLocale { -- |full and abbreviated week days wDays :: [(String, String)], -- |full and abbreviated months months :: [(String, String)], intervals :: [(String, String)], -- |AM\/PM symbols amPm :: (String, String), -- |formatting strings dateTimeFmt, dateFmt, timeFmt, time12Fmt :: String } deriving (Eq, Ord, Show) 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")], intervals = [ ("year","years") , ("month", "months") , ("day","days") , ("hour","hours") , ("min","mins") , ("sec","secs") , ("usec","usecs") ], 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" } -- |Normally, ISO-8601 just defines YYYY-MM-DD -- but we can add a time spec. iso8601DateFormat :: Maybe String -> String iso8601DateFormat mTimeFmt = "%Y-%m-%d" ++ case mTimeFmt of Nothing -> "" Just fmt -> ' ' : fmt rfc822DateFormat :: String rfc822DateFormat = "%a, %_d %b %Y %H:%M:%S %Z"