hora-1.0: src/Data/Time/Hora/Format.hs
module Data.Time.Hora.Format where
import Data.Time.Format (formatTime,defaultTimeLocale)
import Data.Time.Clock
import Data.Time.Hora.Type.DmyHm as M
import Data.Time.LocalTime as L
import qualified Text.Regex.Do.Replace.Template as F
import qualified Text.Regex.Do.Pad as F
import Data.Time.Calendar
import Data.Time.Hora.Type.Time
{- | yyyymmdd -}
ymd::TimeZone -> UTCTime -> Tz String
ymd tz0 utc0 =
let lt2 = L.utcToLocalTime tz0 utc0
day2 = localDay lt2
(y3,m3,d3) = toGregorian day2
f4 i4 = F.pad '0' 2 $ show i4
in Tz tz0 $ "{0}{1}{2}" F.< (f4 <$> [fromIntegral y3,m3,d3])
{- | format UTCTime just as you need it. uses 'defaultTimeLocale'
@
import Text.Regex.Do.Replace.Template
import Prelude hiding ((\<),(\>))
...
it "formatUTCTime" $ do
t1 <- getCurrentTime
let p1@DmyHm{..} = partFormats
traceIO $ formatUTCTime (("{day}/{month} {hour}:{minute}") <
[("day",day),("month",month),("hour",hour),("minute",minute)])
t1
12/12 18:39
@ -}
formatUTCTime::String -- ^ see 'formatTime'. can also make format with functions in this module
-> UTCTime
-> String
formatUTCTime format0 = formatTime defaultTimeLocale format0
-- | %T%Q
hmsFraction::String
hmsFraction = "%T%Q"
-- | %T %Q
hmsFraction'::String
hmsFraction' = "%T %Q"
-- | %F %T
ymdHms::String
ymdHms = "%F %T"
{- | %S.%-q
second.pico -}
spicoFormat::String
spicoFormat = "%S.%-q"
{- | some formats /no padding/
see 'formatTime' for full measure
@
day %-d
month %-m
year %Y
hour %-H
minute %-M @ -}
partFormats::DmyHm String
partFormats = DmyHm {
M.day = "%-d",
M.month = "%-m",
M.year = "%Y",
M.hour = "%-H",
M.minute = "%-M"
}