module System.Cron.Internal.Schedule (findNextMinuteDelay') where import Data.Time findNextMinuteDelay' :: UTCTime -> (UTCTime, Int) findNextMinuteDelay' now = (next, delay) where oneMinuteLater = addUTCTime oneMinute now plainMinute = truncateToPlainMinute $ utctDayTime oneMinuteLater next = oneMinuteLater { utctDayTime = plainMinute } diff = diffUTCTime next now delay = round (realToFrac (diff * 1000000) :: Double) :: Int oneMinute :: NominalDiffTime oneMinute = 60 truncateToPlainMinute :: DiffTime -> DiffTime truncateToPlainMinute = fromIntegral . (* 60) . (`quot` 60) . (truncate :: DiffTime -> Integer)