質問

重複の可能性:
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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top