重複の可能性:
Rubyで特定の日付から何年経過したかを計算する方法は?
データベースから取得した日付スタンプを、人の年齢を示す値に変換しようとしています。これは簡単だと思いますが、理解できないようです。
重複の可能性:
Rubyで特定の日付から何年経過したかを計算する方法は?
データベースから取得した日付スタンプを、人の年齢を示す値に変換しようとしています。これは簡単だと思いますが、理解できないようです。
日付スタンプが 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