48 votes

Code Ruby pour obtenir la date du lundi prochain (ou n'importe quel jour de la semaine)

Étant donné une entrée de, par exemple,

 day = 'Monday'

comment puis-je calculer la date du prochain day ?

 def date_of_next(day)
  ...
end

101voto

fl00r Points 41855
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)>

23voto

Devin Brown Points 1006

Je sais que c'est un vieux post, mais j'ai proposé quelques méthodes pour obtenir rapidement le jour précédent et suivant de la semaine.

 # 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

14voto

Dave Newton Points 93112

Pour des trucs comme ça, je compte sur la bibliothèque chronique.

Le code Ruby serait :

 def date_of_next(day)
    Chronic.parse("next #{day}")
end

13voto

Hannu Points 141

Si vous utilisez des rails, vous pouvez utiliser Date.today.sunday pour le dimanche ou Date.today.monday pour le lundi. Et puis Date.today.sunday - 1.day pour samedi etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X