Это даст вам год, месяц и день:
import Data.Time.Clock
import Data.Time.Calendar
date :: IO (Integer,Int,Int) -- :: (year,month,day)
date = getCurrentTime >>= return . toGregorian . utctDay
Источник: http://www.haskell.org/haskellwiki/Date
В Date.Time.Calendar есть функция gregorianMonthLength с типом Integer ->Int -> Int.Он принимает год и месяц в качестве аргументов, возвращает количество дней, как вам нужно.http://www.haskell.org/ghc/docs/7.0.2/html/libraries/time-1.2.0.3/Data-Time-Calendar.html
Полный пример:
import Data.Time.Clock
import Data.Time.Calendar
date :: IO (Integer,Int,Int) -- :: (year,month,day)
date = getCurrentTime >>= return . toGregorian . utctDay
main = do
(year, month, day) <- date
putStrLn $ "Days in this month: " ++ (show $ gregorianMonthLength year month)