Si tu as vraiment besoin de perf sur cet algo et que tu compte l'utiliser sur des périodes longues ma méthode 'est certainement pas la bonne. Il est certainement possible d'écrire une "formule" pour calculer ça seulement avec les années bissextiles et compagnie ça risque d'être illisible, complexe à débugger et à améliorer si tu veux ajouter le support des jours fériés.
Ma solution est donc dans le style de la tienne, mais en plus rubyique:
def workday?(date)
1 <= date.wday <= 5
end
workday_count_between(start_date, end_date)
count = 0
start_date.upto(end_date) do |date|
count += 1 if workday?(date)
end
count
end
Si le mode de calcul change souvent tu peux aussi passer un block.
NB: je l'ai écrite comme ça à l'arrache sans l'éxecuter, dsl pour les éventuelles erreurs
# Date#upto
Posté par Jean B . En réponse au message Algorithmes calculs de date. Évalué à 1.
Ma solution est donc dans le style de la tienne, mais en plus rubyique:
def workday?(date)
1 <= date.wday <= 5
end
workday_count_between(start_date, end_date)
count = 0
start_date.upto(end_date) do |date|
count += 1 if workday?(date)
end
count
end
Si le mode de calcul change souvent tu peux aussi passer un block.
NB: je l'ai écrite comme ça à l'arrache sans l'éxecuter, dsl pour les éventuelles erreurs