質問
データベースから取得した日付スタンプを、その人の年齢を示す値に変換しようとしています。これは簡単だと思いますが、理解できないようです。
解決
日付スタンプが 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
は、データベースから取得する値の模擬値です。最初の値は年で、2 番目の値は小数年です。
あるいは、次の方法でも実行できます。
years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 41
これは、その人がまだ誕生日を迎えていない場合に調整されます。たとえば、誕生日を微調整すると、次のようになります。
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
所属していません StackOverflow