问题描述
我想获取相对于当前时间的上个月的“开始”时间(在月初的时间)。
我该怎么做?
解决方法
使用UTCTime
我们可以定义一个函数:
import Data.Time
getStartOfPreviousMonth :: UTCTime -> UTCTime
getStartOfPreviousMonth v = do
let (y,m,_) = (toGregorian $ utctDay v)
let v' = addGregorianMonthsClip (-1) $ fromGregorian y m 1
v { utctDay = v',utctDayTime = secondsToDiffTime 0
}
可以像这样使用:
> import Data.Time
Data.Time> ct <- getCurrentTime
Data.Time> getStartOfPreviousMonth ct
2020-07-01 00:00:00 UTC