2016-05-11 25 views
-1

我想在我的meanjs應用中顯示所有用戶的年齡。 如何顯示年齡而不是顯示生日。我plunk demo將生日日期轉換爲年齡in meanjs

控制器:

$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

你的代碼幾乎做你想做的。

它在dateofbirth財產的問題,因爲它是一個字符串(根據你的榜樣。

要顯示它您正在使用date過濾器爲您處理此日期。

但是, 。您的calculateAge功能,您需要將您的字符串轉換爲Date

嘗試以下操作:

$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

這裏是一個簡單的javascript函數來計算日期格式爲「YYYY-MM-DD」的年齡。其中函數的參數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; 
}