Issue #11037 has been updated by citrusmoose (Matt Rice).


What is the status of this?

----------------------------------------
Bug #11037: Time Parse Documentation Incorrect - Undefined method getlocal
https://bugs.ruby-lang.org/issues/11037#change-74343

* Author: cfis (Charlie Savage)
* Status: Assigned
* Priority: Normal
* Assignee: akr (Akira Tanaka)
* Target version: 
* ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x64-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
According to:

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

`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` or `DateTime`. We can also use our own object.

However, that is not correct:

~~~ruby
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>'
~~~

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

~~~ruby
  if off
    now = now.getlocal(off) if now.utc_offset != off
  else
    now = now.getlocal
  end
~~~

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

---Files--------------------------------
time_parse.patch (1.3 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>