1{-# LANGUAGE CPP #-} 2module Data.Time.Orphans where 3 4import Data.Orphans () 5 6import Control.DeepSeq (NFData (..)) 7import Data.Time 8import Data.Time.Clock 9import Data.Time.Clock.TAI 10import Data.Time.Format 11 12#if !MIN_VERSION_time(1,4,0) 13instance NFData Day where 14 rnf (ModifiedJulianDay d) = rnf d 15 16instance NFData UniversalTime where 17 rnf (ModJulianDate d) = rnf d 18 19instance NFData DiffTime where 20 rnf d = d `seq` () 21 22instance NFData AbsoluteTime where 23 rnf d = d `seq` () 24 25instance NFData UTCTime where 26 rnf (UTCTime d t) = rnf d `seq` rnf t 27 28instance NFData NominalDiffTime where 29 rnf d = d `seq` () 30 31instance NFData LocalTime where 32 rnf (LocalTime d tod) = rnf d `seq` rnf tod 33 34instance NFData ZonedTime where 35 rnf (ZonedTime lt tz) = rnf lt `seq` rnf tz 36 37instance NFData TimeOfDay where 38 rnf (TimeOfDay h m s) = rnf h `seq` rnf m `seq` rnf s 39 40instance NFData TimeZone where 41 rnf (TimeZone a b c) = rnf a `seq` rnf b `seq` rnf c 42#endif 43 44#if !MIN_VERSION_time(1,6,0) 45instance ParseTime UniversalTime where 46 -- substituteTimeSpecifier _ = timeSubstituteTimeSpecifier 47 -- parseTimeSpecifier _ = timeParseTimeSpecifier 48 buildTime l xs = localTimeToUT1 0 (buildTime l xs) 49 50instance FormatTime UniversalTime where 51 formatCharacter c = fmap (\f tl fo t -> f tl fo (ut1ToLocalTime 0 t)) (formatCharacter c) 52 53instance Show UniversalTime where 54 show t = show (ut1ToLocalTime 0 t) 55 56instance Read UniversalTime where 57 readsPrec n s = [ (localTimeToUT1 0 t, r) | (t,r) <- readsPrec n s ] 58#endif 59