module Data.Time.Hora.Parse where import Data.Time.Hora.Type.DmyHm as M import Data.Time.Hora.Type.Time import Data.Time.Clock import Data.Time.Calendar import Data.Time.LocalTime as L import Data.Time.Hora.Format {- | specified time in specified zone, to 'DmyHmP' -} parse'::TimeZone -> UTCTime -> Tz DmyHmp parse' tz0 utc0 = let lt2 = L.utcToLocalTime tz0 utc0 day2 = localDay lt2 time2 = localTimeOfDay lt2 (y3,m3,d3) = toGregorian day2 d4 = DmyHm{ M.year = fromIntegral y3, M.month = m3, M.day = d3, M.hour = todHour time2, M.minute = todMin time2 } pico4 = todSec time2 in Tz tz0 $ DmyHmp (d4,pico4) {- | from specified 'UTCTime' -} class Parse out where parse::UTCTime -> out instance Parse DmyHmp where parse::UTCTime -> DmyHmp parse t0 = let (dm1,pico1) = parse t0 in DmyHmp (read <$> dm1,read pico1) instance Parse DmyHmp' where parse::UTCTime -> DmyHmp' parse t1 = let dm1 = flip formatUTCTime t1 <$> partFormats pico2 = formatUTCTime spicoFormat t1 in (dm1,pico2)