73 Stimmen

Wie rundet man in Ruby eine Zeit auf die nächsten 15 Minuten ab?

Gibt es eine einfache Möglichkeit, eine Zeit auf die nächsten 15 Minuten abzurunden?

Das ist es, was ich derzeit tue. Gibt es einen einfacheren Weg, dies zu tun?

t = Time.new
rounded_t = Time.local(t.year, t.month, t.day, t.hour, t.min/15*15)

3voto

denishaskin Punkte 3045

Chucks Antwort ist zwar elegant, bringt Sie aber in Schwierigkeiten, wenn Sie versuchen, auf diese Weise abgeleitete Werte zu vergleichen; die Usecs werden nicht auf Null gesetzt.

Mit der Antwort von Shalmanese ist das erledigt, oder Chucks Antwort kann wie folgt abgeändert werden:

t = Time.new
truncated_t = Time.at(t.to_i - t.sec - t.min % 15 * 60)

1voto

Kent Fredric Punkte 55042

Ihre aktuelle Bewertung mit

min / 15 * 15 

nur das Minimum abschneidet, also

15 => 15
16 => 15
..
29 => 15
30 => 30 

Das ist keine "Rundung".

Sie können die Rundung auf eine schlechte Art und Weise mit

(( min + 7.5 ) / 15).to_i * 15 

Oder die Verwendung von Interna:

( min.to_f / 15 ).round * 15

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X