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