2010-10-17 23 views
5

我有以下的Ruby程序:紅寶石日期計算錯誤 - 「無法轉換成日期確切的數字(類型錯誤)」

require 'date' 

class Person 

def initialize(name, dob) 
    @name = name 
    @dob = dob 
end 

def age 
    Time.now - @dob 
end 

def marry(someone) 
    "Life: " + age.to_s 
end 

end 

fred = Person.new('Fred', Date.new(1934, 4, 16)) 
p fred 
p fred.age.to_s 
p fred.marry(1) 

但是Ruby 1.9.2給出了錯誤:

#<Person:0x2afab78 @name="Fred", @dob=#<Date: 1934-04-16 (4855087/2,0,2299161)>> 
test1.rb:11:in `-': can't convert Date into an exact number (TypeError) 
     from test1.rb:11:in `age' 
     from test1.rb:22:in `<main>' 

我在做什麼錯? TIA

回答

7

你試圖減去DateTime

ruby-1.9.1-p378 > Time.now - Date.today 
TypeError: can't convert Date into Float 

但是你可以安全從日期減去日期:

ruby-1.9.1-p378 > Date.today - Date.new(1900,1,1) 
=> (40466/1) 

ruby-1.9.1-p378 > (Date.today - Date.new(1900,1,1)).to_f/365 # years 
=> 110.865753424658