From: imranwebpost@... Date: 2015-01-07T16:29:20+00:00 Subject: [ruby-core:67395] [ruby-trunk - Bug #10588] Invalid Dates Issue #10588 has been updated by Imran "". File SmartTime.rb added Patch to the above bug : ~~~ 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 else raise ArgumentError, 'argument out of range _ FEB', caller end else if year%4 == 0 super else raise ArgumentError, 'argument out of range _ FEB', caller end end else super end else super end end end ~~~ ---------------------------------------- Bug #10588: Invalid Dates https://bugs.ruby-lang.org/issues/10588#change-50834 * Author: Imran "" * Status: Rejected * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: 2.0.0-p481 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- I was in the process of implementing a date-routine, which could prevent possible out-of-range/invalid date values. The interpreter, rightfully, threw an out-of range error, when I tried any of the following: puts Time.mktime 2014, 13, 32 puts Time.mktime 2014, 13, 32 No surprises there. However, when I tried: puts Time.mktime 2014, 11, 31 The interpreter, happily produced: 2014-12-01. A little intrigued, I went ahead and tried the following routine: 1.upto(12){|month| puts Time.mktime 2014, month, 31} Result: 2014-01-31 ok 2014-03-03 ??? 2014-03-31 ok 2014-05-01 ??? 2014-05-31 ok 2014-07-01 ??? 2014-07-31 ok 2014-08-31 ok 2014-10-01 ??? 2014-10-31 ok 2014-12-01 ??? 2014-12-31 ok I hope, I've been able to describe this issue adequately. Thanks Matz & all the contributors for bringing this wonderful tool to us. Regards. ---Files-------------------------------- SmartTime.rb (953 Bytes) -- https://bugs.ruby-lang.org/