{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -fno-warn-orphans #-} -- | 'Num', 'Real', 'Fractional' and 'RealFrac' instances for 'DiffTime' and -- 'NominalDiffTime' are only available by importing "Data.Thyme.Time". In -- their stead, instances of 'Data.AdditiveGroup.AdditiveGroup', -- 'Data.Basis.HasBasis' and 'Data.VectorSpace.VectorSpace' are given here. -- Addition and subtraction are performed with the 'Data.AdditiveGroup.^+^' -- and 'Data.AdditiveGroup.^-^' operators from -- 'Data.AdditiveGroup.AdditiveGroup', while 'Data.VectorSpace.*^' scales by -- a 'Rational'. To find the ratio of two time differences, define: -- -- @ -- (^\/^) :: ('Data.Basis.HasBasis' v, 'Data.Basis.Basis' v ~ (), 'Data.VectorSpace.Scalar' v ~ s, 'Prelude.Fractional' s) => v -> v -> s -- (^\/^) = ('Prelude./') '`Data.Function.on`' flip 'Data.Basis.decompose'' () -- @ -- -- Finally, write @n 'Data.VectorSpace.*^' 'Data.Basis.basisValue' ()@ where -- literals are expected. -- -- 'UniversalTime' and 'UTCTime' are instances of -- 'Data.AffineSpace.AffineSpace', with @'Data.AffineSpace.Diff' -- 'UniversalTime' ≡ 'DiffTime'@, and @'Data.AffineSpace.Diff' 'UTCTime' ≡ -- 'NominalDiffTime'@. module Data.Thyme.Clock ( -- * Universal Time UniversalTime , modJulianDate -- * Absolute intervals , DiffTime , microDiffTime -- * UTC , UTCTime, UTCView (..) , utcTime , NominalDiffTime , microNominalDiffTime , module Data.Thyme.Clock -- * Lenses , _utctDay, _utctDayTime ) where import Prelude import Control.Lens import Data.Thyme.Clock.Internal import Data.Thyme.Clock.POSIX #if !SHOW_INTERNAL import Data.Thyme.LocalTime.Internal import Data.Thyme.LocalTime.TimeZone #endif #if SHOW_INTERNAL instance Show UTCTime where showsPrec p = showsPrec p . view utcTime #else instance Show UTCTime where showsPrec p = showsPrec p . view zonedTime . (,) utc #endif getCurrentTime :: IO UTCTime getCurrentTime = fmap (review posixTime) getPOSIXTime