首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将DiffTime转换为NominalDiffTime?

如何将DiffTime转换为NominalDiffTime?
EN

Stack Overflow用户
提问于 2014-09-12 10:38:45
回答 2查看 2.7K关注 0票数 12

使用时间库(时间-1.5),我有一个常数,例如1秒.我没有看到创建NominalDiffTime的方法,所以我创建了一个DiffTime:

代码语言:javascript
复制
twoSeconds = secondsToDiffTime 2

现在,我想与UTCTime进行交互:

代码语言:javascript
复制
now <- getCurrentTime
let twoSecondsAgo = addUTCTime (-twoSeconds) now

当然,它不会键入check,因为addUTCTime在参数1中需要一个NominalDiffTime,而我已经通过了一个DiffTime。如何在这两种类型之间进行转换?或者如何创建2秒的NominalDiffTime?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-12 13:29:38

NominalDiffTimeDiffTime都有RealFrac实例,因此也有FractionalReal实例。

您可以通过以下方法将其中任何一个转换为另一个

代码语言:javascript
复制
fromRational . toRational

它的类型是(Real a, Fractional c) => a -> c。这是一件非常常见的事情,并在standard prelude中提供。

代码语言:javascript
复制
realToFrac     :: (Real a, Fractional b) => a -> b
realToFrac      =  fromRational . toRational

DiffTimeNominalDiffTime都有NumFractional实例。这意味着您可以使用两个integer and floating literals来代替它们中的任何一个。以下所有作品都没有任何额外的仪式。

代码语言:javascript
复制
addUTCTime (-2)
addUTCTime 600
addUTCTime 0.5
票数 18
EN

Stack Overflow用户

发布于 2014-09-12 10:49:44

因为NominalDiffTimeNum的一个实例,所以可以使用fromInteger创建它。

代码语言:javascript
复制
>>> fromInteger 1 :: NominalDiffTime
1s
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25806378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档