Ruby 初心者スレッド Part 14
■ このスレッドは過去ログ倉庫に格納されています
0601デフォルトの名無しさん
2007/10/10(水) 15:10:48TimeやDateを利用した方法だと無理なのでしょうか?
(1970/1/1以前も計算したいのでDateを使いたい。Timeは検証用)
※ Timeはここ(http://www.sakalab.org/3zemi06/no6.html)にあった方法を使用
# Time
year,month,day = 2000,10,10
t = Time.now - Time.local(year, month, day)
print (t / (60 * 60 * 24 * 365.2425)).floor
# Date
require 'date'
year,month,day = 2000,10,10
bd = Date.new(year,month,day).mjd
now = Time.now
now_d = Date.new(now.year,now.month,now.day).mjd
print ((now_d - bd) / 365.2425).floor
今日を'07/10/10とするとTime版だと2000/10/10生まれだけ6歳と1歳若くなります。
Date版だと1999年以前の10/10生まれは正しいようですが、2000以降の10/10生まれは1歳若いです。
(1899年以前も'99〜'00前後がズレるようです。)
どうして一部だけズレるのか不明です。
一部のみ+1は複雑になるのでTime/Dateは使わず「現在年−誕生年=年齢(誕生日がまだなら-1)」の方がいいのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています