Bei einer Eingabe von z.B.,
day = 'Monday'
wie kann ich das Datum der nächsten day
?
def date_of_next(day)
...
end
Bei einer Eingabe von z.B.,
day = 'Monday'
wie kann ich das Datum der nächsten day
?
def date_of_next(day)
...
end
require 'date'
def date_of_next(day)
date = Date.parse(day)
delta = date > Date.today ? 0 : 7
date + delta
end
Date.today
#=>#<Date: 2011-10-28 (4911725/2,0,2299161)>
date_of_next "Monday"
#=>#<Date: 2011-10-31 (4911731/2,0,2299161)>
date_of_next "Sunday"
#=>#<Date: 2011-10-30 (4911729/2,0,2299161)>
Für alle, die wie ich hierher gekommen sind, um nach einer Lösung für dieses Problem in Rails zu suchen, gibt es ab Rails 5.2 eine viel einfachere Methode, dies zu tun.
Für alle, die (wie der ursprüngliche Poster) nicht speziell Rails verwenden, ist diese Funktionalität in der ActiveSupport gem.
Um den nächsten Tag einer Woche zu finden, können wir einfach etwas schreiben wie Date.today.next_occurring(:friday)
.
Siehe die Dokumentation für weitere Einzelheiten.
Ich weiß, dass dies ein alter Beitrag ist, aber ich habe mir ein paar Methoden ausgedacht, um schnell den vorherigen und den nächsten Tag der Woche zu ermitteln.
# date is a Date object and day_of_week is 0 to 6 for Sunday to Saturday
require 'Date'
def get_next_day(date, day_of_week)
date + ((day_of_week - date.wday) % 7)
end
def get_previous_day(date, day_of_week)
date - ((date.wday - day_of_week) % 7)
end
puts today = Date.today
# 2015-02-24
puts next_friday = get_next_day(today, 5)
# 2015-02-27
puts last_friday = get_previous_day(today, 5)
# 2015-02-20
Rails >= 5.2.3
Date.current.next_occurring(:monday)
https://api.rubyonrails.org/classes/DateAndTime/Calculations.html#method-i-next_occurring
Für solche Dinge verlasse ich mich auf die chronisch Bibliothek.
Der Ruby-Code würde lauten:
def date_of_next(day)
Chronic.parse("next #{day}")
end
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.