2010-10-17 8 views
5

मैं निम्नलिखित रूबी कार्यक्रम है:रूबी तारीख अंकगणित त्रुटि - "एक सटीक संख्या (लेखन त्रुटि) में दिनांक परिवर्तित नहीं कर सकते"

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) 

लेकिन रूबी 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 
संबंधित मुद्दे