Je veux afficher l'âge de tous mes utilisateurs au réseau. Je lis les données de facebook. Je ne les stocke pas ailleurs.
je montre la date comme:
{{ friend.birthday }}
Comment puis-je afficher l'âge au lieu d'afficher anniversaire.
s'il est possible de créer des filtres, comment créer un filtre et comment l'appliquer.
Vous pouvez implémenter une fonction:
Manette:
$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(friend.birthday) }}
Ou un filtre:
app.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
{{ friend.birthday | ageFilter }}
Algorithme d'âge tiré de cette SO answer .
[EDIT] Si l'âge est inférieur à 1 an et que vous souhaitez afficher les mois, vous pouvez modifier le filtre ageFilter pour calculer la différence de mois:
app.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);
}
function monthDiff(d1, d2) {
if (d1 < d2){
var months = d2.getMonth() - d1.getMonth();
return months <= 0 ? 0 : months;
}
return 0;
}
return function(birthdate) {
var age = calculateAge(birthdate);
if (age == 0)
return monthDiff(birthdate, new Date()) + ' months';
return age;
};
});
Démo Plunker - Age Function
Demo Plunker - Age Filter
Demo Plunker - Filtre d’âge avec mois <1 an
Si vous en avez pour votre argent, c'est par exemple "05/01/2016". Ce sera un code utile pour convertir la date en anniversaire.
AngularJS
app.filter('ageFilter', function(){
return function(birthday){
var birthday = new Date(birthday);
var today = new Date();
var age = ((today - birthday) / (31557600000));
var age = Math.floor( age );
return age;
}
});
HTML
{{ relationTypePreDefined.birthdate | ageFilter }}
En passant, j’ai utilisé cette solution pour convertir une date provenant d’une entrée jquery datepicker en âge.
Si vous utilisez momentjs. Ensuite, vous pouvez créer un filtre simplement en utilisant cet extrait
var now = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";
moment.utc(moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")
Idk, pourquoi je ne peux jamais répondre aux gens, dit que j'ai besoin de plus de représentants, mais pour pouvoir repondre, je dois commenter .. peu importe.
En réponse à @Dean Christian Armada, je continuais à avoir une erreur concernant le filtre. Mais passer à ce qui suit semble bien fonctionner, donc je l’apprécie!
$scope.getAge = function(birthday){
var birthday = new Date(birthday);
var today = new Date();
var age = ((today - birthday) / (31557600000));
var age = Math.floor( age );
return age;
}
Et pour le HMTL
{{ getAge(birthdate) }}