如何获取“一周前”的UNIX时间戳?目前我这样做:
import Data.Time
...
oneWeekAgo = toTimestamp . addDays (-7) <$> now
where now = utctDay <$> getCurrentTime
toTimestamp = formatTime defaultTimeLocale "%s"
但这不起作用,因为formatTime
返回一个空字符串。
我不确定你想要什么,但你可能想要修改utctDay
并使用utcTimeToPOSIXSeconds
将UTCTime
转换为posix时间戳。
import Data.Time
import Data.Time.Clock.POSIX
oneWeekAgo = do now <- getCurrentTime
let oneWeekAgo = now { utctDay = addDays (-7) $ utctDay now }
return $ utcTimeToPOSIXSeconds oneWeekAgo
或者只是减去秒数就可以了。
oneWeekAgo = ((subtract (7 * 24 * 60 * 60)) . utcTimeToPOSIXSeconds) <$> getCurrentTime
我刚刚提出的解决方案是使用UTCTime day 0
将日值转换回来。
import Data.Time
...
oneWeekAgo = toTimestamp . toTime . addDays (-7) <$> now
where now = utctDay <$> getCurrentTime
toTimestamp = formatTime defaultTimeLocale "%s"
toTime day = UTCTime day 0