Ich habe diese Methode gefunden here.Ruby, erhalten Stunden, Sekunden und Zeit von Date.day_fraction_to_time
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 folgende Fehlermeldung:
`<main>': private method `day_fraction_to_time' called for Date:Class (NoMethodError)
I /usr/lib/ruby/1.9.1/date.rb geprüft habe, und ich habe es 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 ging ich die documentation(1.9) und es gibt keine Spur von dieser Methode zu sehen. Ich weiß, es ist eine dumme Frage, aber warum haben sie es entfernt? Es gibt auch dieses Beispiel, wie die Methode zu verwenden, 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 bin noch immer 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>'
genau zu lesen . Ich bremse die OOP-Struktur, so nervig. Ist es nicht "__send__"? – dierre
@dierre: senden funktioniert auch ... Ich versuchte es in irb vor dem Posten – apirogov