100 votes

Trouver le nombre de mois entre deux dates dans Ruby on Rails

J'ai deux objets Ruby on Rails DateTime. Comment trouver le nombre de mois entre eux ? (En gardant à l'esprit qu'ils peuvent appartenir à des années différentes)

188voto

Massimiliano Peluso Points 13357
(date2.year * 12 + date2.month) - (date1.year * 12 + date1.month)

plus d'informations sur http://www.ruby-forum.com/topic/72120

45voto

dgilperez Points 1021

Une réponse plus précise tiendrait compte des jours au loin.

Par exemple, si vous considérez que la distance mensuelle de 28/4/2000 et 1/5/2000 est de 0 plutôt que de 1 , alors vous pouvez utiliser :

 (date2.year - date1.year) * 12 + date2.month - date1.month - (date2.day >= date1.day ? 0 : 1)

15voto

knotito Points 744

Essayez de

 ((date2.to_time - date1.to_time)/1.month.second).to_i

9voto

shock_one Points 467

Vous pouvez reformuler la question comme "combien y a-t-il de premiers jours entre les débuts de mois des dates", puis utiliser des transformations de données de style fonctionnel :

 (date1.beginning_of_month...date2.beginning_of_month).select { |date| date.day == 1 }.size

9voto

Andreykul Points 233

En supposant que les deux soient des dates : ((date2 - date1).to_f / 365 * 12).round Facile.

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