Project

General

Profile

Bug #14790

DateTime.iso8601 parses incorrect ISO8601

Added by Quintasan (Michał Zając) about 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
2.4.2p198
[ruby-core:87276]

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) about 2 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

#2

Updated by nobu (Nobuyoshi Nakada) about 2 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]
#3

Updated by nobu (Nobuyoshi Nakada) about 2 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) about 2 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) almost 2 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) almost 2 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.

Also available in: Atom PDF