ISO 8601 definisce una sintassi per la rappresentazione di un intervallo di tempo.Analisi intervallo di tempo ISO 8601 in Java
Ci sono quattro modi per esprimere un intervallo di tempo:
- di inizio e fine, come "2007-03-01T13: 00: 00Z/2008-05-11T15: 30: 00Z"
- inizio e la durata, come ad esempio "2007-03-01T13: 00: 00Z/P1Y2M10DT2H30M"
- durata e alla fine, come ad esempio "P1Y2M10DT2H30M/2008-05-11T15: 30: 00Z" solo
- durata, come ad esempio " P1Y2M10DT2H30M ", con ulteriori informazioni contestuali
Se alcuni elementi mancano dal valore finale, si presume che siano gli stessi del valore iniziale incluso il fuso orario. Questa caratteristica dello standard consente rappresentazioni concise di intervalli di tempo. Ad esempio, la data di una riunione di due ore compresi gli orari di inizio e fine potrebbe essere semplicemente indicata come "2007-12-14T13: 30/15: 30", dove "/ 15: 30" implica "/ 2007-12- 14T15: 30 "(la stessa data dell'inizio) o le date di inizio e fine di un periodo di fatturazione mensile come" 2008-02-15/03-14 ", dove"/03-14 "implica"/2008-03 -14 "(lo stesso anno dell'inizio).
Inoltre, gli intervalli di ripetizione si formano aggiungendo "R [n] /" all'inizio di un'espressione di intervallo, dove R viene utilizzato come lettera stessa e [n] viene sostituito dal numero di ripetizioni. Tralasciando il valore di [n] si intende un numero illimitato di ripetizioni. Quindi, per ripetere l'intervallo di "P1Y2M10DT2H30M" cinque volte a partire da "2008-03-01T13: 00: 00Z", utilizzare "R5/2008-03-01T13: 00: 00Z/P1Y2M10DT2H30M".
Sto cercando un buon parser Java (se possibile compatibile con la libreria Joda-Time) per analizzare questa sintassi. Qualche suggerimento per una buona biblioteca?
Grazie Barend. La documentazione di Joda-Time era davvero scarsa su questa capacità. Sono contento di vedere che supportano questo formato. Userò Joda. – fellahst
Non riesco a votare fino a quando non ottengo 15 punti, ma non appena li ottengo :) – fellahst