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
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
}
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