C'è un modo per archiviare e manipolare un arco di tempo che tiene conto della durata dei mesi, degli anni bisestili, ecc.?

StackOverflow https://stackoverflow.com/questions/1608175

Domanda

Stavo per scriverlo da solo, ma so che deve esistere e sto solo riuscendo a evitare tutte le parole chiave di Google che mi porterebbero a questo.

Cercherei qualcosa come DDDMMMYYY dove D, M, Y sono il numero di giorni, mesi e anni. Quindi 00103000 indicherebbe un arco di tre mesi e un giorno, oppure 000000001 indicherebbe un arco di un anno. Idealmente questo formato avrebbe anche un modo standard per applicarlo che potrebbe prendere in considerazione tutte le insidie ??del calcolo temporale come un numero variabile di giorni in un mese, anni bisestili, ecc.

Non sto cercando un modo per calcolare un intervallo tra due timestamp noti, come è stato chiesto qui ( Calcola il tempo relativo in C # ), sto cercando qualcosa come un formato stringa specifico che posso memorizzare che indichi un intervallo di tempo da utilizzare per determinare una seconda data sconosciuta da una nota.

Ad esempio, usando il mio formato fittizio sopra: se dicessi "calcola quale data sarebbe 00103000 dal 15 settembre 2009" restituirebbe "il 16 dicembre 2009", che è di tre mesi e un giorno dopo il 15 settembre.

È stato utile?

Soluzione

Consiglio di guardare il formato ISO 8061 per le durate. Non è solo facile analizzare e applicare a una determinata data, è uno standard ben noto con molte risorse disponibili.

Determinare la durata da due punti nel tempo è un po 'più complicato, ma solo perché senza input dall'applicazione, non è chiaro se dal 1 marzo al 1 giugno siano 3 mesi o 92 giorni. Tuttavia, il formato può esprimersi sia allo stesso modo che, ad esempio, 0,25 anni.

Altri suggerimenti

La rappresentazione più semplice e più comune di questo è un numero: il numero di secondi nell'intervallo di tempo (che può essere o meno frazionario, a seconda delle esigenze). Molte biblioteche temporali già rappresentano il tempo in secondi dall'epoca , quindi questo rende addizioni e sottrazioni di tempo banale. L'unico problema principale riguarda gli overflow (ad es. anno 2038 bug ).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top