module Prolude.Time
  ( module Data.Time.Calendar
  , module Data.Time.Clock
  , module Data.Time.Clock.POSIX
  , module Data.Time.Format
  , getCurrentTime
  )
where

import Data.Time.Calendar (Day, fromGregorian, toGregorian)
import Data.Time.Clock
  (DiffTime, NominalDiffTime, UTCTime(UTCTime, utctDay, utctDayTime), addUTCTime)
import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime, posixSecondsToUTCTime, utcTimeToPOSIXSeconds)
import Data.Time.Format (defaultTimeLocale, formatTime)

import Control.Monad.IO.Class (MonadIO(liftIO))
import qualified Data.Time as Time

-- | Returns now
getCurrentTime :: MonadIO m => m UTCTime
getCurrentTime :: m UTCTime
getCurrentTime = IO UTCTime -> m UTCTime
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO IO UTCTime
Time.getCurrentTime