【问题标题】:Converting the current time to an Int (Haskell)将当前时间转换为 Int (Haskell)
【发布时间】:2013-03-24 16:40:31
【问题描述】:

我一直在寻找一种简单的方法来将当前时间(可能是自午夜以来的秒数,或小时、分钟、秒)转换为 int。 谁能指出我正确的方向?我查看了库,但没有成功。

【问题讨论】:

标签: haskell time io


【解决方案1】:

Int 的形式获取自午夜以来的时间非常简单:

import Data.Time.Clock
main = do
  currTime <- getCurrentTime
  let timed = floor $ utctDayTime currTime :: Int
  print timed

对于踢腿和咯咯笑,这里有一个快速功能

integralTime :: (Integral a) => IO a
integralTime = getCurrentTime >>= return.floor.utctDayTime

这是因为TimeDiff(它是一个RealFrac 实例)可以floored 为一个积分。

【讨论】:

  • 也许值得一提的是,这使用了Data.Time.Clock(尽管很容易使用Hoogled)。
  • 另外,toRational 不是必需的:floor 在任何 RealFrac 参数上已经是多态的。
  • 嗯,我收到了这个错误:No instance for (RealFrac DiffTime) from a use of `floor'
  • 奇怪,你有什么版本的 GHC/Data.time?否则,您始终可以使用 emroe verbose floor.toRational
  • 我使用的是 ghc 7.04。我还有一个 7.6.2 的便携版本,奇怪的是,它与 7.6.2 一起编译。但是我不能使用这个版本,因为它没有包含 System.Random 库。 floor.toRational 会产生更多错误。也许我应该只使用 7.6.2 但我需要找到一种导入 System.Random 的方法,我之前尝试导入它时没有任何运气
【解决方案2】:

在搜索“haskell datetime”时,我在 Google 上的第一次点击与 Tim 给出的链接相同。您可以通过getCurrentTime :: IO DateTime 获取当前时间,然后通过diffUTCTime :: UTCTime -&gt; UTCTime -&gt; NominalDiffTime 计算差异(以秒为单位)。

http://hackage.haskell.org/packages/archive/datetime/0.1/doc/html/Data-DateTime.html http://hackage.haskell.org/packages/archive/time/1.1.4/doc/html/Data-Time-Clock.html#t:UTCTime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多