Haskell:从 POSIXTime / NominalDiffTime 中提取 Int

Haskell: Extract Int from POSIXTime / NominalDiffTime

我正在签署 Web 请求,作为查询字符串的一部分,我需要包含 oauth_timestamp=123456789 其中 123456789 是自 1970-01-01 00:00 UTC 以来的标称时间。

我一直在使用POSIXTime for its representation, which is just a type alias for NominalDiffTime

当我想将 POSIXTime / NominalDiffTime 转换为文本以便将其添加到查询字符串项目集合时遇到问题。

问题源于 NominalDiffTime 的构造函数是私有的,因此我无法提取实际数字。

即使使用 show 的 hacky 方式也会附加一个 "s" 生成 123456789s.

是否有从 NominalDiffTime 中提取实际数字的简单方法?

这可能是类型类的一个例子,它使 API 比它们必须的更深奥:NominalDiffTime 实现了 RealFrac,任意精度分数的类型类。因此,floor 函数可供您使用:

λ> import Data.Time.Clock.POSIX
λ> pt <- getPOSIXTime
λ> pt
1458787669.804632s
λ> toRational pt
182348458725579 % 125000
λ> floor pt :: Int
1458787669