2012-11-08 13 views
9

Qual è la logica alla base della fornitura di DiffTimeeNominalDiffTime in Data.Time.Clock?Perché Data.Time.Clock fornisce DiffTime e NominalDiffTime?

Attualmente, non vedo la necessità di entrambi.

Inoltre, non capisco perché per NominalDiffTime ci sia diffUTCTime, mentre per DiffTime non esiste una tale funzione.

Voglio dire, sembra che DiffTime e NominalDiffTime non siano realmente "simmetrici" l'uno con l'altro.

Forse per riassumere: Qual è la differenza tra quei tipi di dati algebrici?

+1

'DiffTime' è un periodo di tempo effettivo. 'NominalDiffTime' può contenere secondi bisestili o anche ore bisestili (come ho capito). – dflemstr

+1

Sospetto che il motivo per cui non esiste 'diffUTCTime' per' DiffTime' è perché in generale non c'è modo di calcolare la differenza in modo accurato per date superiori a (un anno?) In futuro poiché i secondi bisestili sono imprevedibili e sono solo annunciato finora in anticipo. – hammar

risposta

8

NominalDiffTime ignora i secondi intercalati e si può essere certi che diffUTCTime tra 23:00 UTC e 01:00 UTC del giorno successivo è sempre 2 ore, senza secondi aggiunti.

Il risultato di DiffTime può essere modificato da altri fattori, ad esempio, secondi bisestili. Viene misurato come nel cronometro: se, per alcuni motivi, tra le 23:00 UTC e le 01:00 UTC non sono 2 ore, questo tipo lo mostrerà.

In pratica, non hanno differito.

MODIFICA: Hanno obiettivi diversi.

  • NominalDiffTime è per il calcolo della differenza tra i tempi.
  • DiffTime è per il tempo misurato (con il cronometro, ad esempio).
+3

Non differiscono * molto * molto * spesso * ma a volte differiscono, ea volte questa differenza è importante. –

+0

Hm, ma come faccio a creare un 'DiffTime' che include un salto di secondi? Voglio dire, non posso sottrarre UniversalTime 2012-06-30_23: 00: 00 da UnversalTime 2012-07-01_01: 00: 00 perché non ci sono diffUniversalTime ... O posso? – maxschlepzig

+1

Non è possibile, perché DiffTime non fa la differenza tra i tempi, è per il tempo misurato (con il cronometro, per esempio). – matshch

Problemi correlati