Comment savoir si la date d'aujourd'hui est dans une plage de dates?
J'ai un tournoi avec start_time
et end_time
et que vous souhaitez vérifier si l'événement est "en cours". Ce serait à vérifier si la date d'aujourd'hui est dans la gamme entre les deux dates.
Comment voulez-vous faire cela dans une fonction?
Vous devez vous connecter pour publier un commentaire.
Utilisation
===
En fait, il est un opérateur qui va le faire. Faire un
Range
et comparezTime
objets à l'aide de la===
opérateur.mise à Jour post-comment-inondation: Cette version fonctionne bien partout. (Dans les Rails, Ruby 1, et en Ruby 2.) Le plus tôt
irb
exemple aussi a bien fonctionné mais le interactives exemple n'est pas toujours reproduite correctement dans certaines expériences. Celui-ci est plus facile à couper-coller.Tout fonctionne correctement maintenant.
cover?
) fonctionne..to_i
et ensuite utilisé===
pour voir si elles sont dans la gamme. OMI,.coverage?
est une meilleure solution pour les dates.En Ruby 1.9.2
===
ne fonctionne pas, j'obtiens une erreur:Au lieu d'utiliser
#couverture?
:cover?
méthodeDate
ainsi(Date.yesterday..Date.tomorrow).cover?(Date.today) => true
===
fonctionne bien en Ruby 1.9.2. Vous avez juste oublié le.to_i
my_date.in?(my_range)
de travailler, mais apparemment, c'est de faire quelque chose d'autre et de le couvrir? fonctionne très bien en Ruby 2.3/5 RailsSi vous êtes à l'aide de Rails, vous pouvez utiliser
TimeWithZone#between?
. Vous devez ensuite avoir quelque chose comme ceci:Parce que la date classe comprend la même module, chaque objet a une
between?
méthode.Si vous êtes à l'aide de Rails, vous pouvez essayer ceci:
Remarque: j'ai simplement utilisé
beginning_of_day
etend_of_day
de fournir une gamme. L'important, c'est lainclude_with_range?
méthode sur une Plage.include_with_range
puisqu'il n'était pas un cas où une gamme a été comparée à un éventail. Probablement une sorte de tumeur au cerveau. Bonne prise, merci @TylerRick. @heathd réponse est vraiment le meilleur.Si ils sont horodateurs:
TypeError: can't iterate from Time
Vérifié, c'est la date actuelle entre les deux dates. À L'Aide De Ruby
résumé