module Data.Time.Hora.Parse where import Data.Time.Hora.Type.DatePart as M import Data.Time.Hora.Type.Time import Data.Time.Clock import Data.Time.Calendar import Data.Time.LocalTime as L import Data.Fixed {- | UTC -} parse::Num a => UTCTime -> DatePart a parse t0 = let day1 = utctDay t0::Day dt1 = utctDayTime t0::DiffTime (y1,m1,d1) = toGregorian day1 tod1 = timeToTimeOfDay dt1::TimeOfDay pico4 = todSec tod1::Fixed E12 (sec5, MkFixed pico5) = properFraction pico4 in DatePart { year = fromIntegral y1, month = fromIntegral m1, day = fromIntegral d1, hour = fromIntegral $ todHour tod1, minute = fromIntegral $ todMin tod1, second = fromIntegral sec5, pico = fromIntegral pico5 } {- | specified time zone -} parse'::Num a => TimeZone -> UTCTime -> Tz (DatePart a) parse' tz0 utc0 = let lt2 = L.utcToLocalTime tz0 utc0 day2 = localDay lt2 time2 = localTimeOfDay lt2 (y3,m3,d3) = toGregorian day2 d4 = DatePart{ year = fromIntegral y3, month = fromIntegral m3, day = fromIntegral d3, hour = fromIntegral $ todHour time2, minute = fromIntegral $ todMin time2, second = fromIntegral sec5, pico = fromIntegral pico5 } pico4 = todSec time2::Fixed E12 (sec5, MkFixed pico5) = properFraction pico4 in Tz tz0 d4