Date.iso8601 does not properly handle partial date strings
For reduced accuracy, any number of values may be dropped from any of the date and time representations, but in the order from the least to the most significant. For example, "2004-05" is a valid ISO 8601 date, which indicates May (the fifth month) 2004.
However if I parse this example value with
Date.iso8601 I get "January 5th, 2004" when I expect "May 1st, 2004":
$ irb -r date 2.3.0 :001 > date = Date.iso8601('2004-05') => #<Date: 2004-01-05 ((2453010j,0s,0n),+0s,2299161j)> 2.3.0 :002 > date.month => 1