Project

General

Profile

Bug #11037

Updated by nobu (Nobuyoshi Nakada) over 9 years ago

According to: 

 http://ruby-doc.org/stdlib-2.2.1/libdoc/time/rdoc/Time.html 

 `Time#parse` Time#parse can take a 2nd parameter: 

 > We can change the date used to infer our missing elements by passing a second object that responds to mon, day and year, such as `Date`, `Time` Date, Time or `DateTime`. DateTime. We can also use our own object. 

 However, that is not correct: 

 ~~~ruby <pre> 
 irb(main):010:0> Time.parse('12:30 AM', Date.today) 
 NoMethodError: undefined method `getlocal' for #<Date: 2015-04-07 ((2457120j,0s,0n),+0s,2299161j)> 
         from C:/mingw64/mingw64/local/ruby/lib/ruby/2.2.0/time.rb:262:in `make_time' 
         from C:/mingw64/mingw64/local/ruby/lib/ruby/2.2.0/time.rb:364:in `parse' 
         from (irb):10 
         from C:/mingw64/mingw64/local/ruby/bin/irb:11:in `<main>' 
 ~~~ </pre> 

 The problem is in `Time#make_time`, Time#make_time, lines 259 through 263: 

 ~~~ruby <pre> 
   if off 
     now = now.getlocal(off) if now.utc_offset != off 
   else 
     now = now.getlocal 
   end 
 ~~~ </pre> 

 The behavior the documentation does seem desirable, so the code above should check if the now parameter responds to `getlocal` getlocal or not (only `Time` Time does, `Date` Date and `DateTime` DateTime do not).    Or of course the documentation should be updated to specify that a time object must be passed as the now parameter.

Back