Ich habe diese Methode gefunden ici .
start = DateTime.now
sleep 15
stop = DateTime.now
#minutes
puts ((stop-start) * 24 * 60).to_i
hours,minutes,seconds,frac = Date.day_fraction_to_time(stop-start)
Ich habe den folgenden Fehler:
`<main>': private method `day_fraction_to_time' called for Date:Class (NoMethodError)
Ich habe geprüft /usr/lib/ruby/1.9.1/date.rb und ich habe sie gefunden:
def day_fraction_to_time(fr) # :nodoc:
ss, fr = fr.divmod(SECONDS_IN_DAY) # 4p
h, ss = ss.divmod(3600)
min, s = ss.divmod(60)
return h, min, s, fr * 86400
end
Aber ich habe kein Problem, wenn ich es mit ruby1.8 laufen lasse. /usr/lib/ruby/1.8/date.rb gibt mir:
def self.day_fraction_to_time(fr)
ss, fr = fr.divmod(SECONDS_IN_DAY) # 4p
h, ss = ss.divmod(3600)
min, s = ss.divmod(60)
return h, min, s, fr
end
Also habe ich mir die Dokumentation(1.9) und von dieser Methode gibt es keine Spur. Ich weiß, es ist eine dumme Frage, aber warum haben sie sie entfernt? Es gibt sogar ein Beispiel für die Verwendung der Methode in /usr/lib/ruby/1.9.1/date.rb :
def secs_to_new_year(now = DateTime::now())
new_year = DateTime.new(now.year + 1, 1, 1)
dif = new_year - now
hours, mins, secs, ignore_fractions = Date::day_fraction_to_time(dif)
return hours * 60 * 60 + mins * 60 + secs
end
aber ich erhalte immer noch die Fehlermeldung:
test.rb:24:in `secs_to_new_year': private method `day_fraction_to_time' called for Date:Class (NoMethodError)
from test.rb:28:in `<main>'