module Data.Time.Format.Locale (
TimeLocale(..)
, defaultTimeLocale
, iso8601DateFormat
, rfc822DateFormat
)
where
import Data.Time.LocalTime.Internal.TimeZone
data TimeLocale = TimeLocale {
TimeLocale -> [(String, String)]
wDays :: [(String, String)],
TimeLocale -> [(String, String)]
months :: [(String, String)],
TimeLocale -> (String, String)
amPm :: (String, String),
TimeLocale -> String
dateTimeFmt, TimeLocale -> String
dateFmt,
TimeLocale -> String
timeFmt, TimeLocale -> String
time12Fmt :: String,
TimeLocale -> [TimeZone]
knownTimeZones :: [TimeZone]
} deriving (TimeLocale -> TimeLocale -> Bool
(TimeLocale -> TimeLocale -> Bool)
-> (TimeLocale -> TimeLocale -> Bool) -> Eq TimeLocale
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TimeLocale -> TimeLocale -> Bool
$c/= :: TimeLocale -> TimeLocale -> Bool
== :: TimeLocale -> TimeLocale -> Bool
$c== :: TimeLocale -> TimeLocale -> Bool
Eq, Eq TimeLocale
Eq TimeLocale =>
(TimeLocale -> TimeLocale -> Ordering)
-> (TimeLocale -> TimeLocale -> Bool)
-> (TimeLocale -> TimeLocale -> Bool)
-> (TimeLocale -> TimeLocale -> Bool)
-> (TimeLocale -> TimeLocale -> Bool)
-> (TimeLocale -> TimeLocale -> TimeLocale)
-> (TimeLocale -> TimeLocale -> TimeLocale)
-> Ord TimeLocale
TimeLocale -> TimeLocale -> Bool
TimeLocale -> TimeLocale -> Ordering
TimeLocale -> TimeLocale -> TimeLocale
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TimeLocale -> TimeLocale -> TimeLocale
$cmin :: TimeLocale -> TimeLocale -> TimeLocale
max :: TimeLocale -> TimeLocale -> TimeLocale
$cmax :: TimeLocale -> TimeLocale -> TimeLocale
>= :: TimeLocale -> TimeLocale -> Bool
$c>= :: TimeLocale -> TimeLocale -> Bool
> :: TimeLocale -> TimeLocale -> Bool
$c> :: TimeLocale -> TimeLocale -> Bool
<= :: TimeLocale -> TimeLocale -> Bool
$c<= :: TimeLocale -> TimeLocale -> Bool
< :: TimeLocale -> TimeLocale -> Bool
$c< :: TimeLocale -> TimeLocale -> Bool
compare :: TimeLocale -> TimeLocale -> Ordering
$ccompare :: TimeLocale -> TimeLocale -> Ordering
$cp1Ord :: Eq TimeLocale
Ord, Int -> TimeLocale -> ShowS
[TimeLocale] -> ShowS
TimeLocale -> String
(Int -> TimeLocale -> ShowS)
-> (TimeLocale -> String)
-> ([TimeLocale] -> ShowS)
-> Show TimeLocale
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TimeLocale] -> ShowS
$cshowList :: [TimeLocale] -> ShowS
show :: TimeLocale -> String
$cshow :: TimeLocale -> String
showsPrec :: Int -> TimeLocale -> ShowS
$cshowsPrec :: Int -> TimeLocale -> ShowS
Show)
defaultTimeLocale :: TimeLocale
defaultTimeLocale :: TimeLocale
defaultTimeLocale = TimeLocale :: [(String, String)]
-> [(String, String)]
-> (String, String)
-> String
-> String
-> String
-> String
-> [TimeZone]
-> TimeLocale
TimeLocale {
wDays :: [(String, String)]
wDays = [("Sunday", "Sun"), ("Monday", "Mon"),
("Tuesday", "Tue"), ("Wednesday", "Wed"),
("Thursday", "Thu"), ("Friday", "Fri"),
("Saturday", "Sat")],
months :: [(String, String)]
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 :: (String, String)
amPm = ("AM", "PM"),
dateTimeFmt :: String
dateTimeFmt = "%a %b %e %H:%M:%S %Z %Y",
dateFmt :: String
dateFmt = "%m/%d/%y",
timeFmt :: String
timeFmt = "%H:%M:%S",
time12Fmt :: String
time12Fmt = "%I:%M:%S %p",
knownTimeZones :: [TimeZone]
knownTimeZones =
[
Int -> Bool -> String -> TimeZone
TimeZone 0 Bool
False "UT",
Int -> Bool -> String -> TimeZone
TimeZone 0 Bool
False "GMT",
Int -> Bool -> String -> TimeZone
TimeZone (-5 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
False "EST",
Int -> Bool -> String -> TimeZone
TimeZone (-4 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
True "EDT",
Int -> Bool -> String -> TimeZone
TimeZone (-6 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
False "CST",
Int -> Bool -> String -> TimeZone
TimeZone (-5 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
True "CDT",
Int -> Bool -> String -> TimeZone
TimeZone (-7 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
False "MST",
Int -> Bool -> String -> TimeZone
TimeZone (-6 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
True "MDT",
Int -> Bool -> String -> TimeZone
TimeZone (-8 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
False "PST",
Int -> Bool -> String -> TimeZone
TimeZone (-7 Int -> Int -> Int
forall a. Num a => a -> a -> a
* 60) Bool
True "PDT"
]
}
iso8601DateFormat :: Maybe String -> String
iso8601DateFormat :: Maybe String -> String
iso8601DateFormat mTimeFmt :: Maybe String
mTimeFmt =
"%Y-%m-%d" String -> ShowS
forall a. [a] -> [a] -> [a]
++ case Maybe String
mTimeFmt of
Nothing -> ""
Just fmt :: String
fmt -> 'T' Char -> ShowS
forall a. a -> [a] -> [a]
: String
fmt
rfc822DateFormat :: String
rfc822DateFormat :: String
rfc822DateFormat = "%a, %_d %b %Y %H:%M:%S %Z"