    module RIO.Time
      ( module Data.Time
      , getCurrentTime
      , getTimeZone
      , getCurrentTimeZone
      , getZonedTime
      , utcToLocalZonedTime
      ) where

    import Control.Monad.IO.Class
    import Data.Time hiding( getCurrentTime, getTimeZone, getCurrentTimeZone
                           , getZonedTime, utcToLocalZonedTime)
    import qualified Data.Time

    getCurrentTime :: MonadIO m => m UTCTime
    getCurrentTime = liftIO Data.Time.getCurrentTime

    getTimeZone :: MonadIO m => UTCTime -> m TimeZone
    getTimeZone = liftIO . Data.Time.getTimeZone

    getCurrentTimeZone :: MonadIO m => m TimeZone
    getCurrentTimeZone = liftIO Data.Time.getCurrentTimeZone

    getZonedTime :: MonadIO m => m ZonedTime
    getZonedTime = liftIO Data.Time.getZonedTime

    utcToLocalZonedTime :: MonadIO m => UTCTime -> m ZonedTime
    utcToLocalZonedTime = liftIO . Data.Time.utcToLocalZonedTime