module Data.Time.Hora.Type.DmyHm where
import GHC.Generics
import Data.Binary
import Data.Fixed
import qualified Data.Time.Hora.Type.YmdHms as S
data DmyHm a = DmyHm {
day::a,
month::a,
year::a,
hour::a,
minute::a
} deriving (Show, Eq)
instance Functor DmyHm where
fmap f0 d0 = d0 {
day = f0 (day d0),
month = f0 (month d0),
year = f0 (year d0),
hour = f0 (hour d0),
minute = f0 (minute d0)
}
type DmyHmp' = (DmyHm String, String)
newtype DmyHmp = DmyHmp (DmyHm Int, Pico) deriving (Eq, Show, Generic)
deriving instance Generic (DmyHm Int)
instance Binary (DmyHm Int)
instance Binary DmyHmp
pico2second::DmyHmp -> S.YmdHms
pico2second (DmyHmp (r0,pico0)) = S.YmdHms {
S.year = year r0,
S.month = month r0,
S.day = day r0,
S.hour = hour r0,
S.minute = minute r0,
S.second = round pico0
}
instance Ord DmyHmp where
(<=) (DmyHmp(a1,p1)) (DmyHmp(a2,p2)) =
if a1 <= a2 then p1 <= p2
else False
instance Ord (DmyHm Int) where
(<=) a0 b0 = not $
year a0 > (year b0)
|| month a0 > (month b0)
|| day a0 > (day b0)
|| hour a0 > (hour b0)
|| minute a0 > (minute b0)