我正在尝试根据出生日期计算年龄,但出于某种原因,它正常运作。
这是角度代码:
数据来自http请求。
$scope.dob = data.dob;
样本数据 - 02-01-1990。 (DD-MM-YYYY)。
$scope.calculateAge = function calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
这就是我的使用方式。
{{ calculateAge(dob) }}
请告知。
答案 0 :(得分:1)
ageDifMs
是差异的毫秒数,因此您可以根据一年中的毫秒数轻松计算差异:
return Math.floor(ageDifMs / 1000 / 60 / 60 / 24 / 365);
此外,如果您使用的是02-01-1990
格式,则无法将此内容提交给new Date
。相反,我建议使用JavaScript的moment库,它也可以轻松地从提供的格式创建日期,并使用任何指标(包括年)计算两个日期之间的差异。
答案 1 :(得分:0)
您计算年龄的功能似乎正常。
您可以用$ http请求替换$ timeout,并执行与此类似的操作:
angular.module('webapp', [])
.controller('dummyCtrl', ['$scope', '$timeout', function($scope, $timeout) {
$scope.age = 'NOT DEFINED';
// This simulates the synchronicity of the http request
$timeout(function () {
$scope.calculateAge(new Date(2000, 10, 10));
}, 1000);
$scope.calculateAge = function calculateAge(birthday) {
console.log(birthday);
// birthday is a date
var ageDifMs = Date.now() - birthday.getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
$scope.age = Math.abs(ageDate.getUTCFullYear() - 1970);
};
}]);
<!DOCTYPE html>
<html ng-app="webapp">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script>
</head>
<body ng-app="webapp">
<div ng-controller="dummyCtrl">
<span ng-bind="age"></span>
</div>
</body>
</html>