What''s going on here!?>> Date.new.to_time.to_iNoMethodError: undefined method `to_i'' for Mon, 01 Jan -4712 00:00:00 -0800:DateTime from (irb):25>> Date.today.to_time.to_i=> 1245308400>> RUBY_VERSION=> "1.8.7">> Rails.version=> "2.1.1" (I''m not sure if this is a rails thing, or just a ruby thing) -- Posted via http://www.ruby-forum.com/.
If you look at the classes returned, Date.new.to_time returns a DateTime, while Date.today.to_time returns a Time Date.new.to_time.class --> DateTime Date.today.to_time.class --> Time Not sure why that is the case, but obviously DateTime doesn''t have a to_i method. Simon On Fri, 19 Jun 2009 07:37:21 +0800, Michael Economy <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > What''s going on here!? > >>> Date.new.to_time.to_i > NoMethodError: undefined method `to_i'' for Mon, 01 Jan -4712 00:00:00 > -0800:DateTime > from (irb):25 >>> Date.today.to_time.to_i > => 1245308400 > > > > > >>> RUBY_VERSION > => "1.8.7" >>> Rails.version > => "2.1.1" > > > (I''m not sure if this is a rails thing, or just a ruby thing)
On Jun 19, 12:45 am, "Simon Macneall" <macne...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Not sure why that is the case, but obviously DateTime doesn''t have a to_i > method.Date::new() returns Julian day 0, which is Mon, 01 Jan -4712 to_time() is a CoreExtensions method which uses Time::utc_time() -> Time::time_with_datetime_fallback() from CoreExtensions to generate the Time object. From the documentation: Returns a new Time if requested year can be accommodated by Ruby‘s Time class (i.e., if year is within either 1970..2038 or 1902..2038, depending on system architecture); otherwise returns a DateTime Because the year is out of range, you''ll get a DateTime back, which you can''t call to_i on. This is actually quite silly, when you think about it. -Matt