module Data.Time.Hora.Format
(
Format(..),
format,
format') where
import Data.Time.Format (formatTime,defaultTimeLocale,FormatTime(..))
import Data.Time.Clock
import Data.Time.LocalTime as L
import Data.Time.Hora.Type
import Data.String
format::[Format] -> UTCTime -> String
format lf0 utc0 = withDefaultLocale (build lf0) utc0
format'::Tz' tz =>
[Format] -> tz -> UTCTime -> Tz String
format' lf0 tz0 utc0 = Tz tz1 $ withDefaultLocale (build lf0) zt1
where zt1 = utcToZonedTime tz1 utc0::ZonedTime
tz1 = tz' tz0 utc0
withDefaultLocale::FormatTime t =>
String
-> t
-> String
withDefaultLocale = formatTime defaultTimeLocale
instance IsString Format where
fromString = Raw
data Format =
Raw String
| Tab
| Crlf
| Offset
| Zone
| Hm
| Hms
| AM
| Am
| H_24
| H_12
| Min
| S
| Fraction_fixed
| Fraction
| Y_m_d
| Y
| Month
| Mth
| Mth_1_12
| D
| D_wk_1_7
| D_wk_0_6
| D_wk
| D_week
| Wk_year_Sun
| Wk_year_Mon
class Build f where
build::f -> String
instance Build [Format] where
build = concat . (build <$>)
instance Build Format where
build f0 = case f0 of
Raw s1 -> s1
Tab -> "%t"
Crlf -> "%n"
Offset -> "%z"
Zone -> "%Z"
Hm -> "%R"
Hms -> "%T"
AM -> "%p"
Am -> "%P"
H_24 -> "%H"
H_12 -> "%I"
Min -> "%M"
S -> "%S"
Fraction_fixed -> "%q"
Fraction -> "%Q"
Y_m_d -> "%F"
Y -> "%Y"
Month -> "%B"
Mth -> "%b"
Mth_1_12 -> "%m"
D -> "%d"
D_wk_1_7 -> "%u"
D_wk_0_6 -> "%w"
D_wk -> "%a"
D_week -> "%A"
Wk_year_Sun -> "%U"
Wk_year_Mon -> "%W"