我正在签署Web请求,并且作为查询字符串的一部分,我需要包含
oauth_timestamp=123456789
其中123456789
是自1970-01-01 00:00 UTC以来的名义时间。
我一直在使用POSIXTime进行表示,这只是NominalDiffTime的类型别名。
当我想将POSIXTime / NominalDiffTime转换为Text时,我遇到了问题,因此我可以将它添加到查询字符串项集合中。
问题源于NominalDiffTime的构造函数是私有的,因此我无法提取实际数字。
即使使用show
的hacky方式也会追加“s”生成123456789s
。
是否有一种从NominalDiffTime中提取实际数字的简单方法?
答案 0 :(得分:7)
这可能有资格作为类型类的一个例子,使API比它们更加深奥:NominalDiffTime
实现RealFrac
,任意精度分数的类型类。因此,floor
功能可供您使用:
λ> import Data.Time.Clock.POSIX
λ> pt <- getPOSIXTime
λ> pt
1458787669.804632s
λ> toRational pt
182348458725579 % 125000
λ> floor pt :: Int
1458787669