2012-11-08 46 views
9

提供DiffTimeNominalDiffTimeData.Time.Clock背后的原理是什么?为什么Data.Time.Clock提供DiffTime和NominalDiffTime?

目前,我看不出两者的需要。

此外,我不明白为什么NominalDiffTimediffUTCTime,而DiffTime没有这样的功能。

我的意思是,它看起来像DiffTimeNominalDiffTime是不是真的“对称”给对方。

也许来概括:那是什么那些代数数据类型之间的区别?

+1

'DiffTime'是一个实际的时间段。 'NominalDiffTime'可能包含闰秒甚至闰秒(据我了解)。 – dflemstr

+1

我怀疑'DiffTime'没有'diffUTCTime'的原因是因为一般来说,由于闰秒是不可预测的,因此通常无法准确计算日期超过(一年?)的日期的差异,而且它们是只提前到目前为止宣布。 – hammar

回答

8

NominalDiffTime忽略闰秒,并且您可以确定在第二天UTC UTC时间和UTC 01:00之间diffUTCTime始终为2小时,并且不添加任何秒。

DiffTime结果可以通过其它因素而改变,例如,跳跃秒。这与秒表一样:如果出于某些原因,在23:00 UTC和01:00 UTC之间不是2小时,则此类型会显示它。

实际上,它们没有区别。

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

  • NominalDiffTime用于计算时间差。
  • DiffTime是测量时间(例如带秒表)。
+3

它们并不相同,但它们有时会有所不同,有时这种差异很重要。 –

+0

嗯,但是如何创建一个包含闰秒的'DiffTime'?我的意思是我不能只从UnversalTime 2012-07-01_01:00:00中减去UniversalTime 2012-06-30_23:00:00,因为没有diffUniversalTime ...或者我可以吗? – maxschlepzig

+1

你不能,因为DiffTime不是针对不同时间之间的差异,而是针对测量时间(例如使用秒表)。 – matshch