2012-11-08 7 views
9

DiffTimeおよびNominalDiffTimeData.Time.Clockにはどのような理由がありますか?なぜData.Time.ClockはDiffTimeとNominalDiffTimeを提供するのですか?

現在のところ、私は両方の必要性は見当たりません。

NominalDiffTimeの場合はdiffUTCTimeが、なぜならDiffTimeの場合はそのような機能がないとわかりません。

つまり、DiffTimeNominalDiffTimeのように見えますが、実際には互いに「対称」ではありません。

多分、これらの代数データ型の違いは何ですか?

+1

「DiffTime」は実際の期間です。 'NominalDiffTime'にはうるう秒、またはうるう時間が含まれています(私が理解しているように)。 – dflemstr

+1

閏秒は予測できず、将来の(1年?)よりも日付の差を正確に計算する方法が一般的にないため、DiffTimeの 'diffUTCTime'がない理由が疑わしい今のところ事前に発表されています。 – hammar

答えて

8

NominalDiffTimeはうるう秒を無視します。翌日の23:00 UTCと01:00 UTCの間にある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

関連する問題