@@ -1,4 +1,3 @@
1−{-# LANGUAGE CPP, DerivingStrategies, DeriveAnyClass #-}
2module Data.Time.LocalTime.Short
1module Data.Time.LocalTime.Short
3 ( ShortZonedTime
2 ( ShortZonedTime
4 , shortZonedTime
3 , shortZonedTime
@@ -18,33 +17,28 @@ module Data.Time.LocalTime.Short
19import Control.DeepSeq (NFData)
18import Control.DeepSeq (NFData)
20import Control.Lens
19import Control.Lens
20+import Control.Lens.Missing
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 ()
25import Data.Coerce
24import Data.Coerce
26import Data.Ord (comparing)
25import Data.Ord (comparing)
27−import Data.Time as T
26+import qualified Data.Time as T
28import Data.Time.Fmt
27import Data.Time.Fmt
29−import Data.Time.Utils
28+import Data.Time.Format
29+import Data.Time.LocalTime.Instances ()
30import GHC.Generics (Generic)
30import GHC.Generics (Generic)
31import Test.QuickCheck (Arbitrary)
31import Test.QuickCheck (Arbitrary)
32import qualified Test.QuickCheck as QC
32import qualified Test.QuickCheck as QC
33import Test.QuickCheck.Instances ()
33import Test.QuickCheck.Instances ()
35−#if MIN_VERSION_time(1,9,0)
37−import Data.Time.Format.Internal
41-- | @ZonedTime@ where seconds = 0.
36-- | @ZonedTime@ where seconds = 0.
42-- The constructor is not exported to maintain the invariant.
37-- The constructor is not exported to maintain the invariant.
43newtype ShortZonedTime
38newtype ShortZonedTime
44 = ShortZonedTime
39 = ShortZonedTime
45 { unShortZonedTime :: T.ZonedTime
40 { unShortZonedTime :: T.ZonedTime
46− } deriving stock (Generic)
47− deriving newtype (FormatTime, NFData, FromJSON, ToJSON)
41+ } deriving (FormatTime, NFData, Generic, FromJSON, ToJSON)
49shortZonedLocalDay :: ShortZonedTime -> T.Day
43shortZonedLocalDay :: ShortZonedTime -> T.Day
50shortZonedLocalDay = T.localDay . T.zonedTimeToLocalTime . unShortZonedTime
44shortZonedLocalDay = T.localDay . T.zonedTimeToLocalTime . unShortZonedTime
@@ -69,10 +63,6 @@ shortZonedTime = coerce . clipZonedTime
70instance ParseTime ShortZonedTime where
64instance ParseTime ShortZonedTime where
71 buildTime tl ps = shortZonedTime <$> buildTime tl ps
65 buildTime tl ps = shortZonedTime <$> buildTime tl ps
72−#if MIN_VERSION_time(1,9,0)
73− substituteTimeSpecifier _ = substituteTimeSpecifier (Proxy @T.ZonedTime)
74− parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.ZonedTime)
77instance Show ShortZonedTime where
67instance Show ShortZonedTime where
78 -- Display as a string.
68 -- Display as a string.
@@ -96,9 +86,7 @@ instance Ord ShortZonedTime where
96newtype ShortLocalTime
86newtype ShortLocalTime
97 = ShortLocalTime
87 = ShortLocalTime
98 { unShortLocalTime :: T.LocalTime
88 { unShortLocalTime :: T.LocalTime
99− } deriving stock (Eq, Ord, Generic)
89+ } deriving (Eq, Ord, FormatTime, NFData, Generic)
100− deriving newtype (FormatTime)
101− deriving newtype (NFData)
103instance Binary ShortLocalTime
91instance Binary ShortLocalTime
@@ -112,11 +100,6 @@ shortLocalTime = coerce . clipLocalTime
113instance ParseTime ShortLocalTime where
101instance ParseTime ShortLocalTime where
114 buildTime tl ps = shortLocalTime <$> buildTime tl ps
102 buildTime tl ps = shortLocalTime <$> buildTime tl ps
115−#if MIN_VERSION_time(1,9,0)
116− substituteTimeSpecifier _ = substituteTimeSpecifier (Proxy @T.ZonedTime)
117− parseTimeSpecifier _ = parseTimeSpecifier (Proxy @T.LocalTime)
121type FmtShortZonedTime fmt = FmtTime fmt ShortZonedTime
104type FmtShortZonedTime fmt = FmtTime fmt ShortZonedTime