Project

General

Profile

Bug #10703

Updated by nobu (Nobuyoshi Nakada) over 4 years ago

The following is a pure Ruby-based patch to address the issues raised in [Bug <a href="http://bugs.ruby-lang.org/issues/10588"> Bug 10588 Invalid Dates](http://bugs.ruby-lang.org/issues/10588): Dates</a>:

~~~ruby ~~~
class SmartTime < Time
def self.mktime year, month, day
case month
when 4, 6, 9, 11
if day == 31
raise ArgumentError, 'argument out of range _ APR, JUNE, SEP, NOV', caller
else
super
end
when 2

case day

when 30, 31

raise ArgumentError, 'argument out of range _ FEB', caller

when 29

if year%100 == 0

if year%400 == 0
super

super
else

raise ArgumentError, 'argument out of range _ FEB', caller
end

end
else

if year%4 == 0
super

super
else

raise ArgumentError, 'argument out of range _ FEB', caller
end

end
end
else
super

super
end
else
super
end
end
end
~~~

Another version of this patch with a light-hearted commentary, using the same algorithm but a slightly different approach, is available at: [otherimran.wordpress.com](http://otherimran.wordpress.com/2015/01/02/ruby-invalid-dates-patch/) <a href="http://otherimran.wordpress.com/2015/01/02/ruby-invalid-dates-patch/">otherimran.wordpress.com</a>

Ruby is a mature, productive programming tool. It’s not a silly toy. It doesn’t deserve to have such dumb bugs lurking inside its core classes.

That’s just me, exercising my right to politely protest the decision made by Ruby maintainers. I hope they would reconsider and fix it internally.

Back