module Data.Validity.Time.Clock where
import Data.Validity
import Data.Time.Clock
import Data.Validity.Time.Calendar ()
instance Validity UniversalTime where
isValid (ModJulianDate i) = isValid i
instance Validity DiffTime where
isValid = isValid . diffTimeToPicoseconds
instance Validity UTCTime where
isValid UTCTime {..} =
and
[ isValid utctDay
, isValid utctDayTime
, diffTimeToPicoseconds utctDayTime >= 0
, diffTimeToPicoseconds utctDayTime < 86401 * 10 ^ (12 :: Integer)
]
instance Validity NominalDiffTime where
isValid = isValid . (round :: NominalDiffTime -> Integer)