Bug #14790
closed
DateTime.iso8601 parses incorrect ISO8601
Added by Quintasan (Michał Zając) over 6 years ago.
Updated over 6 years ago.
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"
- Status changed from Open to Closed
Applied in changeset trunk|r63512.
time.rb: fix parsing time zone in iso8601
- Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN to 2.3: REQUIRED, 2.4: REQUIRED, 2.5: REQUIRED
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
- 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.
- 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.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0