Frage

Mögliches Duplikat:
Wie berechnet man in Ruby, wie viele Jahre seit einem bestimmten Datum vergangen sind?

Ich versuche, einen aus der Datenbank entnommenen Datumsstempel in einen Wert umzuwandeln, der angibt, wie viele Jahre eine Person alt ist.Ich bin mir sicher, dass das einfach ist, aber ich schaffe es einfach nicht, es herauszufinden.

War es hilfreich?

Lösung

Angenommen, der Datumsstempel wird als DateTime-Wert abgerufen:

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 ist ein Scheinwert für das, was Sie aus Ihrer Datenbank abrufen sollten.Der erste Wert sind Jahre, der zweite sind gebrochene Jahre.

Alternativ können Sie es auch so machen:

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

Dies wird angepasst, falls die Person noch keinen Geburtstag hatte.Zum Beispiel den Geburtstag anpassen:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top