Given an input of, for example,
day = 'Monday'
how can I calculate the date of the next 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)>
For anyone like me who came here looking for a solution in Rails to this problem, as of Rails 5.2 there is a much easier method to do this.
For anyone (like the original poster) not specifically using Rails, this functionality is available in the ActiveSupport gem.
To find the next occurring day of a week, we can simply write something like Date.today.next_occurring(:friday)
.
See the documentation for more details.
I know this is an old post, but I came up with a couple of methods to quickly get the previous and next day of the week.
# 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With