ISO duration a Java (ISO 8601 duration format)

Java má metodu Duration.parse("duration-string"), která vypadá, jako by pracovala s ISO duration, ale není tomu tak. Dokáže parsovat použe tyto suffixy D (day), H (hour), M (minute), S (second).

Takže toto je správně:

Duration.parse("P1D") // jeden den

ale toto je chybně

Duration.parse("P1M") // správně by to bylo "PT1M" ale neznamená to 1 měsíc, ale 1 minutu.

Duration
„PT21.345S“ — parses as „21.345 seconds“
„PT11M“ — parses as „11 minutes“ (where a minute is 60 seconds)
„PT11H“ — parses as „11 hours“ (where an hour is 3600 seconds)
„P3D“ — parses as „3 days“ (where a day is 24 hours or 86400 seconds)
„P3DT3H4M“ — parses as „3 days, 3 hours and 4 minutes“
„P-7H3M“ — parses as „-7 hours and +3 minutes“
„-P7H3M“ — parses as „-7 hours and -3 minutes“
„-P-7H+3M“ — parses as „+7 hours and -3 minutes“
The suffixes in ASCII of „D“, „H“, „M“ and „S“ mark days, hours, minutes and seconds, accepted in upper or lower case.
www.java2s.com/Tutorials/Java/java.time/Duration/2660__Duration.parse_CharSequence_text_.htm

Pokud potřebujete čas, který je v dnech, týdnech, … musíte použít Period

„P2Y“ — Period.ofYears(2)
„P3M“ — Period.ofMonths(3)
„P4W“ — Period.ofWeeks(4)
„P5D“ — Period.ofDays(5)
„P2Y2M3D“ — Period.of(2, 2, 3)
„P2Y2M3W4D“ — Period.of(2, 2, 25)
„P-2Y2M“ — Period.of(-2, 2, 0)
„-P2Y2M“ — Period.of(-2, -2, 0)
www.java2s.com/Tutorials/Java/java.time/Period/2520__Period.parse_CharSequence_text_.htm

Napsat komentář