Rails de calculer la plage de dates dans le mois
Comment puis-je calculer la différence de deux dates dans le mois? Aussi, en cas cela fait une différence, je suis en train de travailler avec les objets Date, pas DateTime. Aussi, certaines options d'arrondi pourrait être sympa pour que je puisse contrôler si je veux arrondir à la hausse ou à la baisse sur les mois partiels.
Merci!
Je l'aime, mais il semble un peu fastidieux de code. ._.
Date-heure et la Date sont en quelque sorte interchangeables à l'aide de la
Peut-être, une question similaire à propos de ans pourrait-il vous aider?
Date-heure et la Date sont en quelque sorte interchangeables à l'aide de la
DateTime#to_date
et Date#to_datetime
méthodes.Peut-être, une question similaire à propos de ans pourrait-il vous aider?
OriginalL'auteur brettish | 2011-05-04
Vous devez vous connecter pour publier un commentaire.
En soustrayant une Date ou DateTime à partir d'un autre donnera le nombre de jours que d'une fraction, mais ce peut être évaluée comme un
Float
ouFixnum
que nécessaire.Par exemple:
Il y avait de 89,0 jours entre aujourd'hui et la même date il y a trois mois. Si vous travaillez de cette aide mois de 30 jours, ou 30.4375 comme ils sont, en moyenne, vous vous retrouvez avec 2.92 mois se sont écoulés entre alors et maintenant, ou arrondi à l'entier le plus proche, 3.
Si vous voulez calculer le nombre exact de mois de calendrier, c'est plus délicat, mais peut être fait.
vous savez quoi, après y avoir réfléchi un peu plus et la façon dont j'allais à propos de la tentative de mettre en œuvre des mois de calendrier, j'ai décidé qu'il n'était tout simplement pas la peine. Je vais utiliser votre approche.
OriginalL'auteur tadman
Cela devrait donner un joint.k. approximation:
Vous pouvez modifier ronde " à "plancher" pour obtenir un résultat plus précis
OriginalL'auteur DanS
Quelque chose comme ceci est plus lisible que de déterminer secondes, et vous donnera le véritable calendrier différence:
Si vous devez faire la différence sur la base de jours ainsi, vous pouvez simplement suivre le modèle
difference = 12 * (b.year - a.year).abs
(avec l' .abs, donc il n'a pas d'importance quel ordre les dates sont précisées dans l')Je garderais l'abs sur l'extérieur de la fonction, parce que sinon, la fonction sera de jeter la direction de l'information. Je pense aussi que vous avez à faire des abdos à la fin de assurez-vous que le mois de différence a été ajoutée à l'année différence est correcte lorsque.année > b.année mais un.mois < b.mois. Votre meilleur pari est d'écrire un tas de résultats connus comme une suite de tests pour la fonction pour vous assurer qu'il se comporte comme vous le souhaitez.
Il y a une version plus propre de cette here: (date2.année * 12 + date2.mois) - (date1.année * 12 + date1.mois)
OriginalL'auteur Glenjamin
Nous avons besoin de quelque chose le long de ces lignes, mais à l'inclusion partielle d'un mois. Donc 1/31 à 2/1 serait rendement encore 2 mois. Peut aider!
OriginalL'auteur adamrneary
Cette réponse, c'est la fin de la partie, s'appuie sur les réponses précédentes, et pourrait probablement être écrit de façon plus concise, cependant, il donne le calendrier de la différence entre deux dates de prise de jours en compte.
OriginalL'auteur Jason
Il y a un rails aide pour cette fonctionnalité:
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-distance_of_time_in_words
OriginalL'auteur Kyle Boon
comment sur cette pratique?
OriginalL'auteur ajahongir
J'avais besoin de le nombre exact de mois (y compris les décimales) entre deux dates et écrit de la méthode suivante.
Si la comparaison disons 26 septembre au 26 septembre (le jour même) j'ai calculer que 1 jour. Si vous n'en avez pas besoin, vous pouvez supprimer la première ligne de la méthode:
period_end = period_end + 1.day
Il passe les spécifications suivantes:
Il s'appuie sur les Rails' ActiveSupport.
OriginalL'auteur mtrolle