- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
193 :デフォルトの名無しさん[sage]:2016/07/17(日) 13:50:05.02 ID:oPCVgRrM - ある誕生日からある日付時の年齢を計算しようと
console.log( (new Date('2010-6-2') - new Date('1996-10-21'))/(1000*60*60*24*365)|0);//13 console.log( (new Date('2010-10-18') - new Date('1996-10-21'))/(1000*60*60*24*365)|0);//14 でやってみたのですがどうも合っていない気がします 0歳 1996年10月21日 1歳 1997年10月21日 13歳 2010年06月02日 14歳 2010年10月18日? 14歳 2010年10月21日 初心者考えに「タイムスタンプで差分出して年間のミリ秒で割ればおk♪」と期待していたのに出来なくてショックででした(泣 そこで、ぐぐってみて修正したところ function calculateAge (birthday, when) { var b = new Date(birthday.getTime()).setFullYear(2000); var w = new Date(when.getTime()).setFullYear(2000); return when.getFullYear() - birthday.getFullYear() - (w >= b ? 0: 1); } console.log(calculateAge(new Date('1996-10-21'),new Date('2010-6-2')));//13 console.log(calculateAge(new Date('1996-10-21'),new Date('2010-10-18')));//13 console.log(calculateAge(new Date('1996-10-21'),new Date('2010-10-21')));//14 これで上手くいってるみたいです が、理由がよくわかりません setFullYearで2000年をまたぐ部分の処理をしているみたいですが 一体何のために処理をしているのでしょうか? chrome
|