@@ -1,4 +1,4 @@
1−{-# LANGUAGE CPP #-}
1+{-# LANGUAGE CPP, DerivingStrategies, DeriveAnyClass #-}
2module Data.Time.LocalTime.Short
2module Data.Time.LocalTime.Short
3 ( ShortZonedTime
3 ( ShortZonedTime
4 , shortZonedTime
4 , shortZonedTime
@@ -21,11 +21,11 @@ import Control.Lens
21import Control.Monad.State
21import Control.Monad.State
22import Data.Aeson
22import Data.Aeson
23import Data.Binary (Binary)
23import Data.Binary (Binary)
24+import Data.Binary.Instances.Time ()
24import Data.Coerce
25import Data.Coerce
25import Data.Ord (comparing)
26import Data.Ord (comparing)
26import Data.Time as T
27import Data.Time as T
27import Data.Time.Fmt
28import Data.Time.Fmt
28−import Data.Time.LocalTime.Instances ()
29import Data.Time.Utils
29import Data.Time.Utils
30import GHC.Generics (Generic)
30import GHC.Generics (Generic)
31import Test.QuickCheck (Arbitrary)
31import Test.QuickCheck (Arbitrary)
@@ -43,7 +43,8 @@ import Data.Time.Format.Internal
43newtype ShortZonedTime
43newtype ShortZonedTime
44 = ShortZonedTime
44 = ShortZonedTime
45 { unShortZonedTime :: T.ZonedTime
45 { unShortZonedTime :: T.ZonedTime
46+ } deriving stock (Generic)
46− } deriving (FormatTime, NFData, Generic, FromJSON, ToJSON)
47+ deriving newtype (FormatTime, NFData, FromJSON, ToJSON)
48shortZonedLocalDay :: ShortZonedTime -> T.Day
49shortZonedLocalDay :: ShortZonedTime -> T.Day
49shortZonedLocalDay = T.localDay . T.zonedTimeToLocalTime . unShortZonedTime
50shortZonedLocalDay = T.localDay . T.zonedTimeToLocalTime . unShortZonedTime
@@ -69,6 +70,7 @@ shortZonedTime = coerce . clipZonedTime
69instance ParseTime ShortZonedTime where
70instance ParseTime ShortZonedTime where
70 buildTime tl ps = shortZonedTime <$> buildTime tl ps
71 buildTime tl ps = shortZonedTime <$> buildTime tl ps
71#if MIN_VERSION_time(1,9,0)
72#if MIN_VERSION_time(1,9,0)
73+ substituteTimeSpecifier _ = substituteTimeSpecifier (Proxy @T.ZonedTime)
72 parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.ZonedTime)
74 parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.ZonedTime)
@@ -94,7 +96,9 @@ instance Ord ShortZonedTime where
94newtype ShortLocalTime
96newtype ShortLocalTime
95 = ShortLocalTime
97 = ShortLocalTime
96 { unShortLocalTime :: T.LocalTime
98 { unShortLocalTime :: T.LocalTime
97− } deriving (Eq, Ord, FormatTime, NFData, Generic)
99+ } deriving stock (Eq, Ord, Generic)
100+ deriving newtype (FormatTime)
101+ deriving newtype (NFData)
99instance Binary ShortLocalTime
103instance Binary ShortLocalTime
@@ -109,6 +113,7 @@ shortLocalTime = coerce . clipLocalTime
109instance ParseTime ShortLocalTime where
113instance ParseTime ShortLocalTime where
110 buildTime tl ps = shortLocalTime <$> buildTime tl ps
114 buildTime tl ps = shortLocalTime <$> buildTime tl ps
111#if MIN_VERSION_time(1,9,0)
115#if MIN_VERSION_time(1,9,0)
116+ substituteTimeSpecifier _ = substituteTimeSpecifier (Proxy @T.ZonedTime)
112 parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.LocalTime)
117 parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.LocalTime)