在 ng-repeat 中将日期转换为年龄
Convert date to age in ng-repeat
我正在尝试将我在 ng-repeat 中的日期转换为年龄。
但是当我在控制器中使用范围时:
$scope.calculateAge = function(birthday) {
var ageDifMs = Date.now() - new Date(birthday);
var ageDate = new Date(ageDifMs);
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
或者当我使用过滤器时:
myApp.filter('ageFilter', function() {
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);
}
return function(birthdate) {
return calculateAge(birthdate);
};
});
有了这个 HTML:
<div ng-repeat="user in users | limitTo:20" class="col-50">
<div class="memba-picture" style="background:url({{ user.picture }}">
<div class="memba-gradient"><i class="fa fa-check memba-wanted"></i></div>
<span class="memba-title">{{user.first_name}}</span>
<p class="memba-age">{{user.more.birthday | ageFilter}} Ans</p> <!-- Or calculateAge -->
</div>
</div>
没用。但是当我在我的控制器中获得范围的日期时,它就起作用了。
我认为这可能是因为当我得到日期时,我将其转换为良好的格式:
userRef.child(birthday).once('value', function(snap) {
$scope.birthday = new Date(snap.val());
})
如何正确获取年龄?
谢谢。
试试这个,将字符串日期转换为日期,就像过滤器中的第 3 行一样
var jimApp = angular.module("mainApp", []);
jimApp.controller('mainCtrl', function($scope){
$scope.birthdate = "1992-05-07T22:00:00.000Z";
});
jimApp.filter('ageFilter', function() {
function calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - new Date(birthday).getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
return function(birthdate) {
return calculateAge(birthdate);
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="mainApp" ng-controller="mainCtrl">
<div>{{birthdate | ageFilter}}</div>
</div>
多亏了PixelBitsat this question的解决方案,才得以解决我的问题。
以下是我的处理方式:
控制器:
$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);
}
HTML
{{ calculateAge(user.more.birthday) }}
谢谢大家!
我正在尝试将我在 ng-repeat 中的日期转换为年龄。
但是当我在控制器中使用范围时:
$scope.calculateAge = function(birthday) {
var ageDifMs = Date.now() - new Date(birthday);
var ageDate = new Date(ageDifMs);
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
或者当我使用过滤器时:
myApp.filter('ageFilter', function() {
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);
}
return function(birthdate) {
return calculateAge(birthdate);
};
});
有了这个 HTML:
<div ng-repeat="user in users | limitTo:20" class="col-50">
<div class="memba-picture" style="background:url({{ user.picture }}">
<div class="memba-gradient"><i class="fa fa-check memba-wanted"></i></div>
<span class="memba-title">{{user.first_name}}</span>
<p class="memba-age">{{user.more.birthday | ageFilter}} Ans</p> <!-- Or calculateAge -->
</div>
</div>
没用。但是当我在我的控制器中获得范围的日期时,它就起作用了。 我认为这可能是因为当我得到日期时,我将其转换为良好的格式:
userRef.child(birthday).once('value', function(snap) {
$scope.birthday = new Date(snap.val());
})
如何正确获取年龄?
谢谢。
试试这个,将字符串日期转换为日期,就像过滤器中的第 3 行一样
var jimApp = angular.module("mainApp", []);
jimApp.controller('mainCtrl', function($scope){
$scope.birthdate = "1992-05-07T22:00:00.000Z";
});
jimApp.filter('ageFilter', function() {
function calculateAge(birthday) { // birthday is a date
var ageDifMs = Date.now() - new Date(birthday).getTime();
var ageDate = new Date(ageDifMs); // miliseconds from epoch
return Math.abs(ageDate.getUTCFullYear() - 1970);
}
return function(birthdate) {
return calculateAge(birthdate);
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="mainApp" ng-controller="mainCtrl">
<div>{{birthdate | ageFilter}}</div>
</div>
多亏了PixelBitsat this question的解决方案,才得以解决我的问题。 以下是我的处理方式:
控制器:
$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);
}
HTML
{{ calculateAge(user.more.birthday) }}
谢谢大家!