Ich versuche, den besten Weg zu finden, die folgende AusgabeWie man einen Menschen lesbaren Zeitbereich zu erzeugen, Rubin mit auf Schienen
<name> job took 30 seconds
<name> job took 1 minute and 20 seconds
<name> job took 30 minutes and 1 second
<name> job took 3 hours and 2 minutes
Ich begann diesen Code
def time_range_details
time = (self.created_at..self.updated_at).count
sync_time = case time
when 0..60 then "#{time} secs"
else "#{time/60} minunte(s) and #{time-min*60} seconds"
end
end
Gibt es eine zu erzeugen effizienterer Weg, dies zu tun. Es scheint viel redundanter Code für etwas sehr Einfaches zu sein.
Eine andere Verwendung für diese ist:
<title> was posted 20 seconds ago
<title> was posted 2 hours ago
Der Code für dieses ähnlich ist, aber stattdessen i Time.now:
def time_since_posted
time = (self.created_at..Time.now).count
...
...
end
nur neugierig, warum ist es schlecht? (self.created_at..self.updated_at) .count danke für die saubere Antwort! – csanz
@csanz: '.count' durchläuft in diesem Fall ein Array jeder Sekunde zwischen den beiden Zeitstempeln und zählt sie. Als ob Sie das Ergebnis des Ausdrucks '100-50' berechnen würden, indem Sie tatsächlich alle Zahlen zwischen 50 und 100 zählen. –
Ich bevorzuge die DateHelper-Methoden. Wenn Sie sich bemühen, es in Englisch zu konvertieren, dann möchten Sie wahrscheinlich nicht Tage und Sekunden kombinieren. Es ist eine künstliche Präzision. –