{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE RecordWildCards #-}
module Data.Validity.Time.Clock where
import Data.Validity
import Data.Time.Clock
import Data.Validity.Time.Calendar ()
instance Validity UniversalTime where
validate = delve "toModifiedJulianDay" . getModJulianDate
instance Validity DiffTime where
validate = trivialValidation
instance Validity UTCTime where
validate UTCTime {..} =
mconcat
[ annotate utctDay "utctDay"
, annotate utctDayTime "utctDayTime"
, check (utctDayTime >= 0) "The day time is positive."
, check
(utctDayTime < 86401)
"The day time is strictly less than 86401."
]
instance Validity NominalDiffTime
where
validate ndt = annotate ((round :: NominalDiffTime -> Integer) ndt) "round"