Ruby konvertiert Datumsstempel in Jahre alt in Ruby [Duplikat]
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.
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