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
我正在签署 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