2012-11-08 64 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