ISO8601 is a simple implementation of the ISO 8601 (Data elements and interchange formats — Information interchange — Representation of dates and times) standard.
Because Durations and DateTime has substract method, Durations has sign to represent a negative value:
(ISO8601::Duration.new("PT10S") - ISO8601::Duration.new("PT12S")).to_s #=> "-PT2S"
(ISO8601::Duration.new("-PT10S") + ISO8601::Duration.new("PT12S")).to_s #=> "PT2S"
Although, the spec allows three separator types: period (.), comma (,), and raised period (·) by now I keep just the period option.
- Decimal fraction in dateTime patterns
- Recurring time intervals
- Ordinal date pattern (YYYY-DDD)
- Week date pattern (YYYY-Www-D)
Arnau Siches under LGPL license. LICENSE file for details.