Ruby Converting Datestamp en années de Ruby [Duplicate
Question
Duplicata possible:
Comment calculer combien d'années se sont écoulées depuis une date donnée dans Ruby?
J'essaie de convertir un datestamp tiré de la base de données en valeur indiquant combien d'années une personne a. Je suis sûr que cela est facile, mais je n'arrive pas à le comprendre.
La solution
En supposant que le Datestamp est récupéré en tant que valeur DateTime:
require 'date'
birth_date = DateTime.parse('1970-01-01 1:35 AM')
time_now = DateTime.now
(time_now - birth_date).to_i / 365 # => 41
(time_now - birth_date).to_f / 365 # => 41.38907504054664
birth_date
est une valeur simulée pour ce que vous devriez récupérer de votre base de données. La première valeur est des années, la seconde est des années fractionnées.
Alternativement, vous pouvez le faire de cette façon:
years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 41
Cela s'ajuste au cas où la personne n'aurait pas encore eu son anniversaire. Par exemple, peaufiner l'anniversaire:
birth_date = DateTime.parse('1970-12-31 11:59 PM')
years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 40
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow