Project

General

Profile

Bug #10703

Updated by nobu (Nobuyoshi Nakada) over 9 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