Also, bei einem DateTime-Objekt und einer festen Zeit, möchte ich das nächste Vorkommen der festen Zeit nach dem angegebenen DateTime-Objekt erhalten.Ruby DateTime: Get ne 5:15 pm (oder ähnlich)
Zum Beispiel gegeben das Datum des 14. März 2016, 16.00 Uhr, und die Zeit von 17.15, ich möchte 14. März zurück, 2016 05.15.
jedoch angesichts der Tag des 14. März 2016, 18.00 Uhr, und die Zeit von 05.15, möchte ich 15. März, zurück 2016, 5.15, denn das ist die nächste Vorkommen ist.
Bisher habe ich diesen Code geschrieben:
# Given fixed_time and date_time
new_time = date_time
if fixed_time.utc.strftime("%H%M%S%N") >= date_time.utc.strftime("%H%M%S%N")
new_time = DateTime.new(
date_time.year,
date_time.month,
date_time.day,
fixed_time.hour,
fixed_time.min,
fixed_time.sec
)
else
next_day = date_time.beginning_of_day + 1.day
new_time = DateTime.new(
next_day.year,
next_day.month,
next_day.day,
fixed_time.hour,
fixed_time.min,
fixed_time.sec
)
end
# Return new_time
Es funktioniert, aber es gibt einen besseren Weg?
Danke! Dies macht die Funktion besser und kleiner, obwohl der Ansatz derselbe ist. Wenn ich keine Antwort mit einem besseren Ansatz bekomme, werde ich Ihre als die akzeptierte Antwort markieren. – shashwat
@shashwat Wenn du einfach zurückschaust, um zu sehen, ob du einen besseren Ansatz finden kannst oder mit dem du fährst? –