Issue #12297 has been updated by Noah Gibbs. Ah! It would be hard to "fix" Ruby's stdlib to not allow dates to have a 0 year in general, because of code like the Date test that can use a Date as a delta. That is: class DateSub < Date; end d2 = d - 1 assert_instance_of(DateSub, d2) Things like DateSub can clearly have a 0 year, because that implies that the *difference* in years is 0, not that it's the year 0. I think it still makes sense to fix strptime with the fix above. But I don't think Date or DateTime should disallow the year 0 in general. ---------------------------------------- Bug #12297: Ruby stdlib date can parse non-existent date with year 0 https://bugs.ruby-lang.org/issues/12297#change-59038 * Author: t b * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- Ruby date lib can parse date with year 0 `$ pry [1] pry(main)> shitdate=Date.strptime('0000-01-07','%Y-%m-%d') => #<Date: 0000-01-07 ((1721064j,0s,0n),+0s,2299161j)> [2] pry(main)> shitdate.year => 0 [3] pry(main)> ` There is no year 0 in gregorian and julian calendar between 1 BC and 1 AD It should raise ArgumentError like it do when month/day number is 0. ---Files-------------------------------- no_year_0.patch (1.62 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>