使用时间库(时间-1.5),我有一个常数,例如1秒.我没有看到创建NominalDiffTime的方法,所以我创建了一个DiffTime:
twoSeconds = secondsToDiffTime 2现在,我想与UTCTime进行交互:
now <- getCurrentTime
let twoSecondsAgo = addUTCTime (-twoSeconds) now当然,它不会键入check,因为addUTCTime在参数1中需要一个NominalDiffTime,而我已经通过了一个DiffTime。如何在这两种类型之间进行转换?或者如何创建2秒的NominalDiffTime?
发布于 2014-09-12 13:29:38
NominalDiffTime和DiffTime都有RealFrac实例,因此也有Fractional和Real实例。
您可以通过以下方法将其中任何一个转换为另一个
fromRational . toRational它的类型是(Real a, Fractional c) => a -> c。这是一件非常常见的事情,并在standard prelude中提供。
realToFrac :: (Real a, Fractional b) => a -> b
realToFrac = fromRational . toRationalDiffTime和NominalDiffTime都有Num和Fractional实例。这意味着您可以使用两个integer and floating literals来代替它们中的任何一个。以下所有作品都没有任何额外的仪式。
addUTCTime (-2)
addUTCTime 600
addUTCTime 0.5发布于 2014-09-12 10:49:44
因为NominalDiffTime是Num的一个实例,所以可以使用fromInteger创建它。
>>> fromInteger 1 :: NominalDiffTime
1shttps://stackoverflow.com/questions/25806378
复制相似问题