lio-0.9.0.0: LIO/Data/Time.hs
{-# LANGUAGE Trustworthy #-}
{- |
This module re-exports "Data.Time" wrapped in 'LIO'.
WARNING: The time functions can be used to carry out
/external-timing attacks/ with less effort than using threads and
synchronization. It is therefore advised that computations that
operate on sensitive data take the same amount of time regardless of
the input.
-}
module LIO.Data.Time (
module Data.Time
, getCurrentTime
, getZonedTime
, utcToLocalZonedTime
) where
import qualified Data.Time as T
import Data.Time hiding ( getCurrentTime
, getZonedTime
, utcToLocalZonedTime)
import LIO
import LIO.TCB
-- | Get the current UTC time from the system clock.
getCurrentTime :: MonadLIO l m => m UTCTime
getCurrentTime = liftLIO $ rethrowIoTCB T.getCurrentTime
-- | Get the local time together with a TimeZone.
getZonedTime :: MonadLIO l m => m ZonedTime
getZonedTime = liftLIO $ rethrowIoTCB T.getZonedTime
-- | Convert UTC time to local time with TimeZone.
utcToLocalZonedTime :: MonadLIO l m => UTCTime -> m ZonedTime
utcToLocalZonedTime = liftLIO . rethrowIoTCB . T.utcToLocalZonedTime