3 ms·
days y m = 28 + (m + (m `div` 8)) `mod` 2 + 2 `mod` m + 2 * (1 `div` m) + ((2 `div` m) `mod` 2) * (leap y) where leap y = multiple 4 y - m
by sparkie 12y ago
days y m = 28 + (m + (m `div` 8)) `mod` 2 + 2 `mod` m + 2 * (1 `div` m)
+ ((2 `div` m) `mod` 2) * (leap y)
where leap y = multiple 4 y - multiple 100 y + multiple 400 y
where multiple int y = ((y + (int - 1)) `mod` int + 1) `div` int