Obtenir le dernier jour du mois en Ruby
J'ai fait un nouvel objet Date.nouveau avec args (année, mois). Après avoir créer ruby ajouté 01 nombre de jours de cet objet par défaut. Est-il possible d'ajouter pas le premier jour, mais le dernier jour du mois que j'ai passé en tant que arg(par exemple, 28 si il sera 02month ou 31 si il sera 01month) ?
Vous devez vous connecter pour publier un commentaire.
utilisation
Date.civil
Avec
Date.civil(y, m, d)
ou son alias.new(y, m, d)
, vous pouvez créer un nouvel objet Date. Les valeurs du jour (d) et le mois (m) peut être négatif dans ce cas, ils comptent à rebours à partir de la fin de l'année et à la fin du mois respectivement.18] pry(main)> Date.new(2012,11,-1) => Fri, 30 Nov 2012
Date.new(year, month, -1).day
eh bien, je sais que vous pouvez comprendre les paramètres déjà =)Pour obtenir la fin du mois, vous pouvez également utilisons l'aide de
end_of_month
.Vous pouvez en savoir plus sur end_of_month dans les Rails de l'API Docs.
require 'active_support/core_ext
parfait, les méthodesdays
,months
fonctionne également comme des rails, merci beaucoup.end_of_month
œuvres dans les rails 4 sans exiger rienrequire 'active_support'
premier. edgeguides.rubyonrails.org/active_support_core_extensions.htmlJ'ai donc été à la recherche dans Google pour la même chose ici...
Je n'étais pas heureux avec au-dessus de ma solution après la lecture de la documentation
dans RUBY-DOC était:
Exemple, pour obtenir
10/31/2014
Date.new(2014,10,1).next_month.prev_day
Date.new(2016, 3, 4).next_month.prev_day = Sun, 03 Apr 2016
C'est mon
Time
en fonction de la solution. J'ai une préférence personnelle pour elle par rapport àDate
bien que leDate
solutions proposées ci-dessus lire quelque sorte mieux.reference_time ||= Time.now
return (Time.new(reference_time.year, reference_time.month + 1) - 1).day
C'est une autre façon de trouver