module Util.Time ( belongToCurrentMonth , belongToCurrentWeek , timeToDay ) where import Data.Time.Calendar import Data.Time.Calendar.WeekDate (toWeekDate) import Data.Time.Clock (UTCTime, getCurrentTime) import Data.Time.LocalTime belongToCurrentMonth :: UTCTime -> IO Bool belongToCurrentMonth time = do (timeYear, timeMonth, _) <- toGregorian <$> timeToDay time (actualYear, actualMonth, _) <- toGregorian <$> (getCurrentTime >>= timeToDay) return (actualYear == timeYear && actualMonth == timeMonth) belongToCurrentWeek :: UTCTime -> IO Bool belongToCurrentWeek time = do (timeYear, timeWeek, _) <- toWeekDate <$> timeToDay time (actualYear, actualWeek, _) <- toWeekDate <$> (getCurrentTime >>= timeToDay) return (actualYear == timeYear && actualWeek == timeWeek) timeToDay :: UTCTime -> IO Day timeToDay time = localDay . (flip utcToLocalTime time) <$> getTimeZone time