@@ -73,6 +73,10 @@ data TimeZone = TimeZone
7373 -- ^ The name of the zone, typically a three- or four-letter acronym.
7474 } deriving (INSTANCES_USUAL )
7575
76+ LENS (TimeZone ,timeZoneMinutes,Minutes )
77+ LENS (TimeZone ,timeZoneSummerOnly,Bool )
78+ LENS (TimeZone ,timeZoneName,String )
79+
7680instance Hashable TimeZone
7781instance NFData TimeZone
7882
@@ -182,6 +186,10 @@ data TimeOfDay = TimeOfDay
182186 , todSec :: {-# UNPACK #-}! DiffTime -- ^ Second.
183187 } deriving (INSTANCES_USUAL )
184188
189+ LENS (TimeOfDay ,todHour,Hour )
190+ LENS (TimeOfDay ,todMin,Minute )
191+ LENS (TimeOfDay ,todSec,DiffTime )
192+
185193derivingUnbox " TimeOfDay" [t | TimeOfDay -> Int64 |]
186194 [| \ TimeOfDay {.. } -> fromIntegral (todHour .|. shiftL todMin 8 )
187195 .|. shiftL (todSec ^. microseconds) 16 | ]
@@ -347,6 +355,9 @@ data LocalTime = LocalTime
347355 -- ^ Local time-of-day.
348356 } deriving (INSTANCES_USUAL )
349357
358+ LENS (LocalTime ,localDay,Day )
359+ LENS (LocalTime ,localTimeOfDay,TimeOfDay )
360+
350361derivingUnbox " LocalTime" [t | LocalTime -> (Day, TimeOfDay) |]
351362 [| \ LocalTime {.. } -> (localDay, localTimeOfDay) | ]
352363 [| \ (localDay, localTimeOfDay) -> LocalTime {.. } | ]
@@ -452,6 +463,9 @@ data ZonedTime = ZonedTime
452463 , zonedTimeZone :: ! TimeZone
453464 } deriving (INSTANCES_USUAL )
454465
466+ LENS (ZonedTime ,zonedTimeToLocalTime,LocalTime )
467+ LENS (ZonedTime ,zonedTimeZone,TimeZone )
468+
455469instance Hashable ZonedTime
456470instance NFData ZonedTime where
457471 rnf ZonedTime {.. } = rnf zonedTimeZone
@@ -655,19 +669,3 @@ utcToZonedTime z t = view zonedTime (z, t)
655669zonedTimeToUTC :: ZonedTime -> UTCTime
656670zonedTimeToUTC = snd . review zonedTime
657671
658- -- * Lenses
659-
660- LENS (TimeZone ,timeZoneMinutes,Minutes )
661- LENS (TimeZone ,timeZoneSummerOnly,Bool )
662- LENS (TimeZone ,timeZoneName,String )
663-
664- LENS (TimeOfDay ,todHour,Hour )
665- LENS (TimeOfDay ,todMin,Minute )
666- LENS (TimeOfDay ,todSec,DiffTime )
667-
668- LENS (LocalTime ,localDay,Day )
669- LENS (LocalTime ,localTimeOfDay,TimeOfDay )
670-
671- LENS (ZonedTime ,zonedTimeToLocalTime,LocalTime )
672- LENS (ZonedTime ,zonedTimeZone,TimeZone )
673-
0 commit comments