2011-04-20 44 views
4

我有两个问题:当前年和月中的天数

如何在haskell中获得当前年份(不是日期)?

我怎样才能获得某一个月的数量天数?例如04.2011已经有30天了。

回答

4

这会给你的年,月,日:

import Data.Time.Clock 
import Data.Time.Calendar 

date :: IO (Integer,Int,Int) -- :: (year,month,day) 
date = getCurrentTime >>= return . toGregorian . utctDay 

来源:

有一个在Date.Time.Calendar称为gregorianMonthLength型整型功能 - >诠释 - >诠释。 需要一年和一个月的时间作为参数,返回天数,就像你需要的一样。 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) 
+0

THX非常:) – mrquestion 2011-04-20 13:07:55

+6

你看到'>>任何时间=回报.'你应该表示怀疑。这就是“你应该使用fmap”的成语。 'date = fmap(toGregorian。utctDay)getCurrentTime'或者在Control.Applicative导入时,'date = toGregorian。 utctDay <$> getCurrentTime'。 – Carl 2011-04-20 20:04:03

相关问题