File tree Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Expand file tree Collapse file tree 1 file changed +21
-0
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ module Data.Date
8
8
, weekday
9
9
, diff
10
10
, isLeapYear
11
+ , lastDayOfMonth
11
12
, module Data.Date.Component
12
13
) where
13
14
@@ -83,6 +84,26 @@ isLeapYear y = (mod y' 4 == 0) && ((mod y' 400 == 0) || not (mod y' 100 == 0))
83
84
where
84
85
y' = fromEnum y
85
86
87
+ -- | Get the final day of a month and year, accounting for leap years
88
+ lastDayOfMonth :: Year -> Month -> Day
89
+ lastDayOfMonth y m = case m of
90
+ January -> unsafeDay 31
91
+ February
92
+ | isLeapYear y -> unsafeDay 29
93
+ | otherwise -> unsafeDay 28
94
+ March -> unsafeDay 31
95
+ April -> unsafeDay 30
96
+ May -> unsafeDay 31
97
+ June -> unsafeDay 30
98
+ July -> unsafeDay 31
99
+ August -> unsafeDay 31
100
+ September -> unsafeDay 30
101
+ October -> unsafeDay 31
102
+ November -> unsafeDay 30
103
+ December -> unsafeDay 31
104
+ where
105
+ unsafeDay = unsafePartial fromJust <<< toEnum
106
+
86
107
-- TODO: these could (and probably should) be implemented in PS
87
108
foreign import canonicalDateImpl :: Fn4 (Year -> Int -> Day -> Date ) Year Int Day Date
88
109
foreign import calcWeekday :: Fn3 Year Int Day Int
You can’t perform that action at this time.
0 commit comments