2017-01-25 26 views
2

私は、生年月日に基づいてユーザーの年齢を計算しています。それは問題なく動作します。しかし、私はそれが誕生日に6ヶ月であるとき、年齢は切り上げる必要があります。月齢を誕生日に換算するjavascript

私はマスク日付を提供するためにjquery input mask pluginを使用します。 JavaScriptのブレハンドラで

HTML

<div class="container"> 
     <header> 
     <h3>Calculate Age from Date of Birth</h3> 
     </header> 
     <div class="form-group"> 
     <input type="text" class="form-control mask-date" id="dob" placeholder="Date of Birth"> 
     </div> 

     <div class="form-group"> 
     <input type="number" class="form-control" id="age" placeholder="Age"> 
     </div> 
</div> 

はJavaScript

$('.mask-date').mask("99/99/9999",{placeholder:"mm/dd/yyyy"}); 

    $('#dob').blur(function(event) { 
     var dob = $('#dob').val(); 
     dob = new Date(dob); 
     var today = new Date(); 

     var age = Math.floor((today-dob)/ (365.25 * 24 * 60 * 60 * 1000)); 
     console.log(age); 
    }); 
+0

ん恐らくMath.round()に動作しませんか? – JamesT

+0

@JamesT、問題は年齢を計算することではなく、人の誕生日の6ヶ月であれば、それを四捨五入することです。 – ultrasamad

+0

はい、Math.roundをMath.round以外に丸めて使用します。GOTO 0の答えを参照してください。 – JamesT

答えて

2

Math.roundMath.floorを置き換える:

var age = Math.round((today-dob)/ (365.25 * 24 * 60 * 60 * 1000)); 
+0

年齢計算は私にとっては効果的ですが、その人の誕生日の6ヶ月であれば年齢を切り上げたいと思います。 – ultrasamad

+0

今のところ、Math.round()を使用すると同じ結果が得られます。 – ultrasamad

+0

@ultrasamad 'Math.round'はあなたの目的のために働くはずです。それがあなたが望んでいない場合は、生年月日の例とあなたの質問に期待する年齢を追加することを検討してください。 –

0

毎年同じ日数はありません。だから、月と日

var d1 = new Date(); // current day 
var d2 = new Date(1999, 5, 16); // born day 

var age = d1.getFullYear() - d2.getFullYear(); 
if (d1.getMonth()<d2.getMonth() || d1.getMonth() == d2.getMonth() && d1.getDay() < d2.getDay()) 
{ 
age = age - 1; 
} 

// here is actual age in "age" 
2

あなたが強くmoment.jsライブラリを使用することを検討すべきであるに基づいて補正を数年の間substractを作成して行うことが容易です。これは、JavaScript用の非常に強力な日付/時刻操作ライブラリであり、業界で広く使用されています。ドキュメントは包括的で、他の多くの日付関数が役立つと確信しています。

ダウンロードしてJavaScriptの前にスクリプトのソースを追加してください。

新Javascriptを

$('#dob').blur(function(event) { 
    // convert date into moment date object (specifying the format) 
    var dob = moment($('#dob').val(), 'MM/DD/YYYY'); 

    // you can format the date easily 
    console.log(dob.format('DD/MMM/YYYY'); // 01/Jan/2001 

    // you can output the date from now which rounds the year as you want 
    console.log(dob.fromNow()); 
}); 

出力

日の今日:2017年1月25日(2017年1月25日)

dob = '10/01/2017' // in 8 months 
dob = '01/20/2016' // a year ago 
dob = '08/20/2015' // a year ago 
dob = '07/20/2015' // 2 years ago (rounding by 6 months as you expect) 
関連する問題