Haskell:从POSIXTime / NominalDiffTime中提取Int

时间:2016-03-24 01:12:27

标签: haskell type-conversion epoch

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

我一直在使用POSIXTime进行表示,这只是NominalDiffTime的类型别名。

当我想将POSIXTime / NominalDiffTime转换为Text时,我遇到了问题,因此我可以将它添加到查询字符串项集合中。

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

即使使用show的hacky方式也会追加“s”生成123456789s

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

1 个答案:

答案 0 :(得分:7)

这可能有资格作为类型类的一个例子,使API比它们更加深奥:NominalDiffTime实现RealFrac,任意精度分数的类型类。因此,floor功能可供您使用:

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