Actions
Bug #12833
closedincorrect iso8601 parsing of YYYY-MM format
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
Description
Duplicate¶
This ticket duplicates https://bugs.ruby-lang.org/issues/12285
Expected¶
DateTime.iso8601('2016-10')
parses the input string as four-digit year and two-digit month.
$ ruby -r date -e "puts DateTime.iso8601('2016-10').iso8601"
2016-10-01T00:00:00+00:00
Actual¶
DateTime.iso8601('2016-10')
parses the input string as four-digit year and two-digit day-of-month.
$ ruby -r date -e "puts DateTime.iso8601('2016-10').iso8601"
2016-01-10T00:00:00+00:00
Steps to reproduce¶
$ ruby -v -r date -e "puts DateTime.iso8601('2016-10').iso8601"
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
2016-01-10T00:00:00+00:00
More details¶
$ ruby -r date -e "puts Date._iso8601('2016-10')"
{:mday=>10, :year=>2016}
$ ruby -r date -e "puts Date._iso8601('2016-101')"
{:yday=>101, :year=>2016}
This seems to suggest that the "10" is parsed as day-of-month (:mday
) in the case of "YYYY-DD", but "101" is parsed as day-of-year (:yday
) in the case of "YYYY-DDD". (The 3-digit day part does in fact represent the day-of-year; that feature is correct.)
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0