module Text.Time.Pretty
( prettyTimeAutoFromNow,
prettyTimeAuto,
prettyDayAutoFromNow,
prettyDayAuto,
-- Helper functions
timeAgo,
timeAgoToDiffTime,
daysAgo,
daysAgoToDays,
-- * Helper Types
TimeAgo (..),
DaysAgo (..),
-- * Rendering
renderDaysAgoAuto,
renderTimeAgoAuto,
-- * Constants
picoSecondsPerSecond,
secondsPerMinute,
minutesPerHour,
hoursPerDay,
daysPerWeek,
)
where
import Data.Time
import Text.Time.Pretty.Constants
import Text.Time.Pretty.Render
import Text.Time.Pretty.TimeAgo
prettyTimeAutoFromNow :: UTCTime -> IO String
prettyTimeAutoFromNow before = do
now <- getCurrentTime
pure $ prettyTimeAuto now before
prettyTimeAuto :: UTCTime -> UTCTime -> String
prettyTimeAuto now before = renderTimeAgoAuto $ timeAgo $ diffUTCTime now before
prettyDayAutoFromNow :: Day -> IO String
prettyDayAutoFromNow before = do
today <- localDay . zonedTimeToLocalTime <$> getZonedTime
pure $ prettyDayAuto today before
prettyDayAuto :: Day -> Day -> String
prettyDayAuto today before = renderDaysAgoAuto $ daysAgo $ diffDays today before