ISO8601
ISO8601 is a simple implementation of the ISO 8601 (Data elements and interchange formats — Information interchange — Representation of dates and times) standard.
Comments
Duration sign
Because Durations and DateTime has a substraction method, Durations has sign to be able 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'
Separators
Although, the spec allows three separator types: period (.), comma (,), and raised period (·) by now I keep just the period option.
Century treatment
The specification says that you can express a reduced precision year just giving the century (i.e. '20' to refer the inclusive range 2000-2999).
This implementation expands the century to the first value for its range so:
ISO8601::DateTime.new('20').century # => 20
ISO8601::DateTime.new('20').year # => 2000
TODO
- Decimal fraction in dateTime patterns
- Recurring time intervals
- Ordinal date pattern (YYYY-DDD)
- Week date pattern (YYYY-Www-D)
- Treat the
201005
as2000-10-05
instead of2010-05
Contributors
License
Arnau Siches under the MIT License