Haskell:从POSIXTime/NominalDiffTime中提取Int

tmo*_*boy 6 haskell type-conversion epoch

我签约的网络请求,并作为查询字符串的一部分,我需要包括 oauth_timestamp=123456789其中123456789是因为1970-01-01 00:00 UTC的标称时间.

我一直在使用POSIXTime表示它,它只是NominalDiffTime的类型别名.

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

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

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

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

hao*_*hao 8

这可能有资格作为类型类的一个例子,使API比它们必须更深奥:NominalDiffTimeimplements RealFrac,任意精度分数的类型类.因此,floor您可以使用该功能:

?> import Data.Time.Clock.POSIX
?> pt <- getPOSIXTime
?> pt
1458787669.804632s
?> toRational pt
182348458725579 % 125000
?> floor pt :: Int
1458787669
Run Code Online (Sandbox Code Playgroud)