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