En ruby, il est très facile de compter le nombre de jours entre deux dates.

date1 = 1.month.ago
date2 = Date.today
puts date2-date1

Cependant il peut arriver que vous ayez besoin non pas de calculer le nombre de jours entre deux dates … Mais le nombre de jours de semaine (du lundi au vendredi) entre deux dates.
Dans le cas d’un extranet pour calculer le nombre de jours travaillés, cela peut s’avérer très utile :)

Vamos ! Placez, dans votre code (dans l’idée, n’importe ou. Mais mettez le à un endroit ou vous le retrouverez. Sinon, vous allez rapidement perdre le contrôle de votre application) :
class Date
def weekdays_until(date)
return 0 if date <= self
(self..date).select{|day| day.is_weekday?}.size
end
def is_weekday?
self.wday != 0 && self.wday != 6
end
end

Et pour l’utiliser :
1.month.ago.weekdays_until(Date.today)

Cool non ? :)

Que faisons-nous ?
Nous surchargeons l’objet Date en y ajoutant deux nouvelles méthodes :
- is_weekday? qui nous retourne true si on est du lundi au vendredi.
- weekdays_until qui nous calcule le nombre de jours du lundi au vendredi seulement.

Evidemment, cela ne prends pas en compte les vacances scolaires ;)

Note : les « tricks » 1.month.ago ne sont disponibles que si vous êtes dans un environnement Rails. Dans le cas contraire, il vous faudra calculer la date passée manuellement

2 Réponses à “Ruby/Rails : Nombre de jours de semaine entre deux dates”

  1. Philippe dit :

    « working_day » ? :)

  2. Damien dit :

    Non. Ca n’a pas forcément de rapport avec les jours travaillés (on peut travailler le samedi par ailleurs). C’est bien les jours de la semaine.

Laisser une réponse

 
Fork me on GitHub