我正在签署网络请求,作为查询字符串的一部分,我需要包括oauth_timestamp=123456789
其中 123456789
是自 1970-01-01 00:00 UTC 以来的标称时间。
我一直在使用 POSIXTime 来表示它,这只是 NominalDiffTime 的类型别名。
当我想将 POSIXTime/NominalDiffTime 转换为 Text 以便可以将其添加到查询字符串项集合中时,我遇到了问题。
问题源于 NominalDiffTime 的构造函数是私有(private)的,因此我无法提取实际数字。
即使是使用 show
的骇人听闻的方式也会附加一个“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
关于Haskell:从 POSIXTime/NominalDiffTime 中提取 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36191584/