1

重複の可能性:
Rubyで特定の日付から何年経過したかを計算する方法は?

データベースから取得した日付スタンプを、人の年齢を示す値に変換しようとしています。これは簡単だと思いますが、理解できないようです。

4

1 に答える 1

2

日付スタンプが 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
于 2011-05-13T01:54:48.857 に答える