Domanda

Possibile duplicato:
Come calcolare quanti anni sono trascorsi da una determinata data in Ruby?

Sto cercando di convertire un datario prelevato dal database in un valore che indica quanti anni ha una persona.Sono sicuro che sia facile, ma non riesco a capirlo.

È stato utile?

Soluzione

Supponendo che il datastamp venga recuperato come valore 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 è un valore fittizio per ciò che dovresti recuperare dal tuo database.Il primo valore è anni, il secondo è anni frazionari.

In alternativa, puoi farlo in questo modo:

years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 41

Questo si adatta nel caso in cui la persona non abbia ancora compiuto il compleanno.Ad esempio, modificando il compleanno:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top