module Data.Thyme.Clock.POSIX
( posixDayLength
, module Data.Thyme.Clock.POSIX
) where
import Prelude
import Control.Lens
import Data.AdditiveGroup
import Data.Micro
import Data.Thyme.Clock.Internal
import qualified Data.Time.Clock.POSIX as T
import Data.VectorSpace
type POSIXTime = NominalDiffTime
posixTime :: Iso' UTCTime POSIXTime
posixTime = iso (\ (UTCRep t) -> t ^-^ unixEpoch)
(UTCRep . (^+^) unixEpoch) where
unixEpoch = 40587 *^ posixDayLength
getPOSIXTime :: IO POSIXTime
getPOSIXTime = fmap (NominalDiffTime . toMicro . toRational) T.getPOSIXTime