{-# OPTIONS_GHC -fno-warn-orphans #-} module Bookhound.Utils.DateTime where import Data.Time (LocalTime (..), ZonedTime (..)) instance Eq ZonedTime where == :: ZonedTime -> ZonedTime -> Bool (==) ZonedTime x ZonedTime y = (ZonedTime -> LocalTime zonedTimeToLocalTime ZonedTime x forall a. Eq a => a -> a -> Bool == ZonedTime -> LocalTime zonedTimeToLocalTime ZonedTime y) Bool -> Bool -> Bool && (ZonedTime -> TimeZone zonedTimeZone ZonedTime x forall a. Eq a => a -> a -> Bool == ZonedTime -> TimeZone zonedTimeZone ZonedTime y) instance Ord ZonedTime where compare :: ZonedTime -> ZonedTime -> Ordering compare ZonedTime x ZonedTime y = forall a. Ord a => a -> a -> Ordering compare (ZonedTime -> LocalTime zonedTimeToLocalTime ZonedTime x) (ZonedTime -> LocalTime zonedTimeToLocalTime ZonedTime y) showDateTime :: ZonedTime -> String showDateTime :: ZonedTime -> String showDateTime (ZonedTime (LocalTime Day date TimeOfDay time) TimeZone offset) = forall a. Show a => a -> String show Day date forall a. Semigroup a => a -> a -> a <> String "T" forall a. Semigroup a => a -> a -> a <> forall a. Show a => a -> String show TimeOfDay time forall a. Semigroup a => a -> a -> a <> forall a. Int -> [a] -> [a] take Int 3 (forall a. Show a => a -> String show TimeZone offset) forall a. Semigroup a => a -> a -> a <> String ":" forall a. Semigroup a => a -> a -> a <> forall a. Int -> [a] -> [a] drop Int 3 (forall a. Show a => a -> String show TimeZone offset)