Bug #14790
closedDateTime.iso8601 parses incorrect ISO8601
Description
I noticed it today when migrating to Time in my library but DateTime somehow parses incorrect ISO8601 dates. Technically that's a feature but I believe this behaviour is incorrect. Time#iso8601 behaves correctly in this case.
Steps to reproduce¶
require 'time'
date = "2018-05-17T12:17:11+0200"
DateTime.iso8601(date) # => #<DateTime: 2018-05-17T12:17:11+02:00 ((2458256j,37031s,0n),+7200s,2299161j)>
Time.iso8601(date) # ArgumentError: invalid date: "2018-05-17T12:17:11+0200"
Updated by Hanmac (Hans Mackowiak) over 6 years ago
you mean the offset right?
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators says that "±hhmm" is valid too in iso8601
so i think the bug is more in Time because the offset should be valid?
Time itself does print it as "+0200" on inspect
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r63512.
time.rb: fix parsing time zone in iso8601
- lib/time.rb (Time.xmlschema): a colon in time zone designator
can be omitted. [ruby-core:87277] [Bug #14790]
Updated by nobu (Nobuyoshi Nakada) over 6 years ago
- Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN to 2.3: REQUIRED, 2.4: REQUIRED, 2.5: REQUIRED
Updated by Quintasan (Michał Zając) over 6 years ago
Yes, you are right. It was a bug after all but not in the way I originally thought :D.
Hanmac (Hans Mackowiak) wrote:
you mean the offset right?
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators says that "±hhmm" is valid too in iso8601
so i think the bug is more in Time because the offset should be valid?
Time itself does print it as "+0200" on inspect
Updated by usa (Usaku NAKAMURA) over 6 years ago
- Backport changed from 2.3: REQUIRED, 2.4: REQUIRED, 2.5: REQUIRED to 2.3: REQUIRED, 2.4: DONE, 2.5: REQUIRED
ruby_2_4 r64148 merged revision(s) 63512,63514.
Updated by nagachika (Tomoyuki Chikanaga) about 6 years ago
- Backport changed from 2.3: REQUIRED, 2.4: DONE, 2.5: REQUIRED to 2.3: REQUIRED, 2.4: DONE, 2.5: DONE
ruby_2_5 r64431 merged revision(s) 63512,63514.