2016-05-11 9 views
-1

私のmeanjsアプリにすべてのユーザーの年齢を表示したい。 生年月日を表示する代わりに年齢を表示するにはどうすればいいですか?私plunk demo誕生日を平均年齢に変換する

コントローラー:

$scope.agedate = new Date(); 
    $scope.calculateAge = function calculateAge(birthday) { 
    var ageDifMs = Date.now() - birthday.getTime(); 
    var ageDate = new Date(ageDifMs); // miliseconds from epoch 
    return Math.abs(ageDate.getUTCFullYear() - 1970); 
} 

HTML:

<p ng-bind="items.user.displayName"></p> 
<p ng-bind="items.user.dateofbirth | date"></p> 
<p ng-bind="calculateAge(items.user.dateofbirth)"></p> 

私のデータ: -

$scope.items = { 
"_id": "5733163d4fc4b31d0ff2cb07", 
"user": { 
"_id": "5732f3954fc4b31d0ff2cb05", 
"displayName": "karthi keyan", 
"dateofbirth": "1991-10-04T18:30:00.000Z", 
"profileImageURL": "./modules/users/client/img/profile/uploads/ed948b7bcd1dea2d7086a92d27367170" 
}, 
"__v": 0, 
"comments": [], 
"content": "this is testing purpose for e21designs", 
"categoryone": "Moral Ethics", 
"category": "Anonymous Question", 
"title": "Worried", 
"created": "2016-05-11T11:23:41.500Z", 
"isCurrentUserOwner": true 
}; 

私のplunk demo

+0

の可能性のある重複した[JavaScriptで年齢を計算](http://stackoverflow.com/questions/4060004/calculate-age-in-javascript) –

答えて

0

あなたのコードはほとんどあなたが望むことをします。

それはそれはあなたの例に従って文字列(。

あなたはあなたのためにこれを扱うdateフィルタを使用している日付として、それを表示するにはだから。、

dateofbirthプロパティに問題がある。しかし、中。あなたがDateにあなたの文字列を変換する必要があり、あなたのcalculateAge機能

は、以下のことを試してみてください。

$scope.calculateAge = function calculateAge(birthday) { // birthday is a string 
    var ageDifMs = Date.now() - new Date(birthday).getTime(); // parse string to date 
    var ageDate = new Date(ageDifMs); // miliseconds from epoch 
    return Math.abs(ageDate.getUTCFullYear() - 1970); 
} 

希望すると助かります。

+0

あなたの偉大な答えをありがとう.... ! –

0

この問題はangularjsとはまったく関係ありません。純粋なJavascriptの日付差計算です。 (momentjs)[http://momentjs.com/]]のようなサードパーティライブラリを使用して、そのような計算を行い、文字列形式の日付を解析するのに役立てることを強くお勧めします。

0

ここでは、日付形式 "YYYY-MM-DD"の年齢を計算するためのjavascriptの単純な関数です。どこにdateString関数のパラメータが生年月日です。

function calculateAge(dateString) { 
    var today = new Date(); 
    var birthDate = new Date(dateString); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    return age; 
} 

これに$ scopeを適用すると、角度関数として使用できます。このように:

$scope.calculateAge = function(dateString) { 
    var today = new Date(); 
    var birthDate = new Date(dateString); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    return age; 
} 
関連する問題