Haskell:将日期转换为UNIX时间戳

Haskell:将日期转换为UNIX时间戳,haskell,time,timestamp,Haskell,Time,Timestamp,如何获取“一周前”的UNIX时间戳?目前我有: import Data.Time ... oneWeekAgo = toTimestamp . addDays (-7) <$> now where now = utctDay <$> getCurrentTime toTimestamp = formatTime defaultTimeLocale "%s" 导入数据。时间 ... oneWeekAgo=toTimestamp。现在添加天数(-7) 其

如何获取“一周前”的UNIX时间戳?目前我有:

import Data.Time
...
oneWeekAgo = toTimestamp . addDays (-7) <$> now
  where now = utctDay <$> getCurrentTime
        toTimestamp = formatTime defaultTimeLocale "%s"
导入数据。时间
...
oneWeekAgo=toTimestamp。现在添加天数(-7)
其中now=utctDay getCurrentTime
toTimestamp=formatTime defaultTimeLocale“%s”

但这不起作用,因为
formatTime
返回的是一个空字符串。

我刚刚提出的解决方案是使用
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
导入数据。时间
...
oneWeekAgo=toTimestamp。托蒂姆。现在添加天数(-7)
其中now=utctDay getCurrentTime
toTimestamp=formatTime defaultTimeLocale“%s”
toTime日=UTCTime日0

我不确定您到底想要什么,但您可能需要修改
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
导入数据。时间
导入Data.Time.Clock.POSIX

oneWeekAgo=do now后者又短又甜,但我们能逃脱
7*24*60*60
?我喜欢写
-7
,因为我们要做的事情很明显。
oneWeekAgo = ((subtract (7 * 24 * 60 * 60)) . utcTimeToPOSIXSeconds) <$> getCurrentTime