如何获取“一周前”的UNIX时间戳?目前我这样做:
import Data.Time
...
oneWeekAgo = toTimestamp . addDays (-7) <$> now
where now = utctDay <$> getCurrentTime
toTimestamp = formatTime defaultTimeLocale "%s"
但这不起作用,因为formatTime
正在返回空字符串。
答案 0 :(得分:2)
我不确定您想要什么,但您可能希望修改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
答案 1 :(得分:0)
我刚才提出的解决方案是使用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