Soustraire des dates avec Ruby
Je suis juste en ayant un regard sur ruby et jouait avec la date/heure de chose.
irb(main):001:0> jamis_DOB = Time.mktime(2003, 10, 22, 06, 59)
=> Wed Oct 22 06:59:00 +0300 2003
irb(main):002:0> age = Time.now - jamis_DOB
=> 222934108.172989
irb(main):005:0> age_in_years = (((age / 3600) / 24) / 365).to_i
=> 7
Donc, mon exemple n'est pas si bon que age_in_years ne sais pas si il y a des années bissextiles que ces années.
J'ai été par le biais de certains googlé de l'heure/date tutoriels et n'ont pas trouvé un moyen facile de juste soustraire deux dates et de l'avoir de retour en années, mois, jours, etc... format.
Je devine que ruby est un add-on ou quelque chose de construit pour ce genre de chose. Quelqu'un pourrait-il me dire ce que c'est? (Aussi, tous les conseils sur la façon de trouver les réponses à ce type de chose pour référence future?)
Grâce.
OriginalL'auteur Leke | 2010-11-14
Vous devez vous connecter pour publier un commentaire.
Vous voulez
Date
au lieu de:
Vous donnera la différence dans les années entre aujourd'hui et le 1er janvier 2000. Il peut sans doute être amélioré, j'ai juste utilisé le nombre moyen de jours par an (365.25), qui va vous donner la bonne réponse, sauf dans l'extrême bord des cas.
Vous pouvez aussi faire quelque chose comme ceci:
Mais
Date#next_year
a été introduit en Ruby 1.9, donc il ne serait pas travailler dans 1.8.7.Bien sûr, la façon la plus simple de déterminer le nombre d'années entre deux dates est juste en soustrayant les nombres:
Oui, vous avez raison, le dernier exemple a prendre le jour et le mois en compte aussi, bien sûr. Le milieu exemple juste les étapes d'un an pour chaque tour dans la boucle et compte le nombre de tours. Je l'ai changé pour être un peu plus correct.
J'ai été très confus au sujet de pourquoi Ruby était revenant toujours un
/1
après ma date de soustractions, était important de faire unto_i
sur le résultat comme mentionné ci-dessus pour obtenir la valeur en nombre de jours.OriginalL'auteur Theo