2016-12-20 18 views
-1

私は私が12 後に日付を入れてcalculation.If .Iはcode.Thisコードの下に年間のために完璧に働いていると年の年齢を計算することができますJSに非常に初心者です(例:14/12/1950)の今月のその月の表示NaN Years.Now私は年を表示したい年齢の誰から与えられた誕生日から。誰でもこれを手伝ってもらえますか?前もって感謝します。年齢、年月日をjs(js ui datepickerを使用)で計算する方法は?

$(document).ready(function() 
 
{ 
 
console.log($(document).width());   
 
    $('#datepicker').datepicker 
 
    ({ 
 
     dateFormat: 'dd/mm/yy', 
 
     changeMonth: true, 
 
     changeYear: true, 
 
     yearRange: '1900:2150', 
 
     maxDate: new Date(), 
 
     inline: true, 
 

 
      onSelect: function() { 
 
       var birthDay = document.getElementById("datepicker").value; 
 
       var DOB = new Date(birthDay); 
 
       var today = new Date(); 
 
       var age = today.getTime() - DOB.getTime(); 
 
       age = Math.floor(age/(1000 * 60 * 60 * 24 * 365.25)); 
 

 
       document.getElementById('agecal').innerText = age; 
 
      } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<div class="form-group"> 
 
    <label for="datepicker">Date of Birth: <span style="color:red">*</span></label> 
 
    <input type="text" id="datepicker" name="date_of_birth" class="form-control" placeholder="Insert your Date of Birth..."> 
 
</div> 
 
<div class="form-group"> 
 
    <label for="agecal">Age as On(<?php echo date('d/m/Y'); ?>): <span id="agecal" style="background-color:#60ab59;padding: 0px 50px 0px 50px;color: white;font-weight: bold; border-radius: 5px;" >0</span></label> 
 
</div>

答えて

0

[OK]を、私は理由の2つの日付形式がsame.Nowなかった私はdd/mm/yyからmm/dd/yyにそれを変換する.AND私はそれぞれgetMonth()getDay()と月と日の計算を得るproblem.Firstlyを考え出し、NaN戻ってきました。

$(document).ready(function() 
 
{ 
 
console.log($(document).width());   
 
    $('#datepicker').datepicker 
 
    ({ 
 
     dateFormat: 'mm/dd/yy', 
 
     changeMonth: true, 
 
     changeYear: true, 
 
     yearRange: "-100:+0", 
 
     maxDate: new Date(), 
 
     inline: true, 
 

 
      onSelect: function() { 
 
       var birthDay = document.getElementById("datepicker").value; 
 
       var DOB = new Date(birthDay); 
 
       var today = new Date(); 
 
       var age = today.getTime() - DOB.getTime(); 
 
       var elapsed = new Date(age); 
 
       var year = elapsed.getYear()-70; 
 
       var month = elapsed.getMonth(); 
 
       var day = elapsed.getDay(); 
 
       var ageTotal = year + " Years," + month + " Months," + day + " Days"; 
 

 
       document.getElementById('agecal').innerText = ageTotal; 
 

 
      } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
 
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<div class="form-group"> 
 
    <label for="datepicker">Date of Birth: <span style="color:red">*</span></label> 
 
    <input type="text" id="datepicker" name="date_of_birth" class="form-control" placeholder="Insert your Date of Birth..."> 
 
</div> 
 
<div class="form-group" style="margin-top:10px;"> 
 
    <label for="agecal">Age as On(<?php echo date('d/m/Y'); ?>): <span id="agecal" style="background-color:#60ab59;padding: 3px 15px 3px 15px;color: white;font-weight: bold; border-radius: 5px;" >0 Years,0 Months,0 Days</span></label> 
 
</div>

0

私はあなたのコードの小さなバイオリンを作り、次のように違いを取得することができた:

リンク:https://jsfiddle.net/suvartheec/zrhpmrgs/2/

説明:私は新しいを作成2つの時刻(現在とb'day)を減算することによって取得しているミリ秒数を使用して、日付変数を更新します。 1970年1月1日00:00:00 UTCからの経過時間を無視して閏秒を無視して計算されるので、1970年1月の日付です。) したがって、私は70を引いて、 。

 var elapsed = new Date(age); 
     document.getElementById('agecal').innerText = elapsed.getYear()-70; 

その大まかなアイデアですが、それはあなたを得る必要があります。

EDIT:更新フィドル:12より大きい日付のNaNでのhttps://jsfiddle.net/suvartheec/zrhpmrgs/3/

原因はJSに固有の日付形式は年/月/日です。 datepicker configを変更して、その形式で日付を送信してください。どちらか一方をonSelect関数で翻訳して、残りのコードと互換性のある形式にする必要があります。

これが役に立ちます。

+0

私は2つの問題を持っていますが、これら二つの問題の答えを与えていません。 ** 1。**「年月日」のように年齢を欲しいです。 ** 2。** 12インチ(例えば1960年12月15日)の日付の後に 'NaN 'を表示します。 –

+0

「12時以降」の問題の最新の回答。もう1つ(get monthなど)では、getMonthなどの関数を経過変数に使用してそのデータを取得できます。 – suvartheec

関連する問題