aboutsummaryrefslogtreecommitdiff
path: root/server/src/Utils
diff options
context:
space:
mode:
authorJoris2017-11-08 23:47:26 +0100
committerJoris2017-11-08 23:47:26 +0100
commit27e11b20b06f2f2dbfb56c0998a63169b4b8abc4 (patch)
tree845f54d7fe876c9a3078036975ba85ec21d224a1 /server/src/Utils
parenta3601b5e6f5a3e41fa31752a2c704ccd3632790e (diff)
Use a better project structure
Diffstat (limited to 'server/src/Utils')
-rw-r--r--server/src/Utils/Time.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/server/src/Utils/Time.hs b/server/src/Utils/Time.hs
new file mode 100644
index 0000000..97457c7
--- /dev/null
+++ b/server/src/Utils/Time.hs
@@ -0,0 +1,25 @@
+module Utils.Time
+ ( belongToCurrentMonth
+ , belongToCurrentWeek
+ , timeToDay
+ ) where
+
+import Data.Time.Clock (UTCTime, getCurrentTime)
+import Data.Time.LocalTime
+import Data.Time.Calendar
+import Data.Time.Calendar.WeekDate (toWeekDate)
+
+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