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.

Était-ce utile?

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
scroll top