将生日日期转换为meanjs中的年龄

时间:2016-05-11 16:02:13

标签: angularjs meanjs

我想在我的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

3 个答案:

答案 0 :(得分: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);
}

希望它会有所帮助。

答案 1 :(得分:0)

请注意,此问题与angularjs完全无关。它是纯Javascript日期差异计算。 我强烈建议使用像(momentjs)[http://momentjs.com/]这样的第三方库进行此类计算,以帮助您解析字符串格式化的日期。

答案 2 :(得分: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;
}