为什么Data.Time.Clock提供DiffTime和NominalDiffTime?

max*_*zig 11 datetime haskell

Data.Time.Clock中提供DiffTime 提供的理由是什么?NominalDiffTime

目前,我认为两者都不需要.

另外,我不明白为什么NominalDiffTimediffUTCTime,但是DiffTime没有这样的功能.

我的意思是,它看起来DiffTime并且NominalDiffTime彼此之间并不真正"对称".

也许总结一下:这些代数数据类型有什么区别?

mat*_*hch 11

NominalDiffTime忽略闰秒,你可以确定diffUTCTime在第二天的UTC时间23:00到第二天的UTC时间总是2小时,没有添加任何秒数.

结果DiffTime可以通过其他因素更改,例如,闰秒.这与秒表一样:如果由于某些原因,在UTC时间23:00和01:00 UTC之间不是2小时,则此类型将显示它.

在实践中,他们没有区别.

编辑:他们有不同的目标.

  • NominalDiffTime 用于计算时间之间的差异.
  • DiffTime 用于测量时间(例如,使用秒表).

  • 它们没有太多*非常*经常*但它们有时会有所不同,有时这种差异很重要. (3认同)