8
votes

Comment soustraire deux variables de date angularjs

Je suis assez nouveau à angularjs, mais cela va ici. Je suis capable de deux dates à travers angularjs dans la forme jj / mm / aaaa , mais ce que je dois faire, c'est d'une manière utile de soustraire les deux dates pour faire la différence entre les deux jours entre les deux. J'ai créé une fonction JQuery pour le faire, mais je ne sais pas comment passer dans les deux dates sur la fonction. Donc, je me demandais s'il y avait une façon différente d'y aller?

J'essaie de mettre en place un système de déclenchement en fonction du nombre de jours entre les deux dates pour que certaines choses soient stylisées. Par exemple, si c'est dans les 10 jours, je veux qu'il utilise style 1 et si c'est dans les 20 jours, utilisez style 2 et ainsi de suite.


2 commentaires

À quoi ressemble votre code?


Des pensées sur les 2 réponses ajoutées?


7 Réponses :


2
votes

Je suis aussi un novice angularjs, mais vous ne manipuleriez pas cela en faisant des propriétés disponibles via votre modèle de vue JavaScript?

Par exemple, ont un champ style qui change en fonction des champs de date (c.-à-d. Style renvoie le style 1 Lorsque si la différence est de 10 jours) et, espérons-le, à travers la liaison angularjs, les mises à jour se propageront à l'écran.

Je pense que le bon terme correspond à la propriété comparé < / em> ou propriété calculée

éditer

Je ne sais pas si c'est ce que vous recherchez mais que vous recherchez mais que vous recherchez, mais voyez Exemple de diffusion de la date de calcul et de modification d'un style Tout basé sur les propriétés du modèle de vue (étendue)

scope.diff et scope.col sont le 2 propriétés à lier à

http://jsfiddle.net/chrismouray/wfjv6/

html xxx

js xxx

css xxx


5 commentaires

Eh bien, je suppose que le vrai problème est comment puis-je calculer les différents en jours?


@Chrismoutray c'est un excellent exemple mais comment le faire pour chaque article de tableau?


@vittore Vous voulez dire que vous avez une liste d'objets comme l'exemple de TODO sur la page principale des sites angularjs? Dans quel cas je pense chaque objet enfant devrait être un objet de la portée var nesecope = $ rootscope. $ Nouveau (); et ensuite vous utiliseriez $ watch contre elle


Droite, mais comment j'écoute ces scopes / faire ng-répéter en utilisant ces étanches que j'ai créées?


Cela donnera au nombre de jours entre deux dates, mais cela ne donne pas le nombre exact de jours sur lesquels la plage de temps se propage. Par exemple: d1 = 06/24/2015 2pm, D2 = 06/25/02/2015 2pm La différence donnera 2 jours le nombre de jours croisés par la plage de temps sera de 3 jours les 2 valeurs peuvent être identiques ou non , Dépendant de la situation. Je crois que le 2e on est plus intéressant



13
votes

méthode JavaScript de base: xxx

en utilisant l'une des bibliothèques de date (telles que moments.js): xxx


0 commentaires

5
votes

Vous ne convertissez simplement la date en horodatage, puis soustrayez.

var Date1 = 08/16/2004;
var Date2= 10/24/2005;

var timestamp1 = new Date(Date1).getTime();
var timestamp2 = new Date(Date2).getTime();

var diff = timestamp1 - timestamp2


var newDate = new Date (diff);


0 commentaires

2
votes

Ceci fonctionne et voici 2 fonctions de date javascript sans faille que vous ne devriez jamais être sans ...

// Returns the days between a & b date objects...
function dateDiffInDays(a, b) {
    var _MS_PER_DAY = 1000 * 60 * 60 * 24;
    // Discard the time and time-zone information.
    var utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
    var utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());
    return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}

// Calculate how many days between now and an event...
function daysTill(e) {
    var eventE = new Date(e);
    var today =  new Date();
    return dateDiffInDays(today, eventE);
}


2 commentaires

Comment adapter cette méthode pour calculer avec des minutes?


C'est en fait le calcul de la différence entre les milisecondes (millièmes d'une seconde) et divisant le résultat de _ms_per_day pour obtenir des jours. Donc, si vous vouliez avoir des minutes, vous pouvez simplement ajouter une variable «diviseur» pour le remplacer et transmettre le nombre de MS pour diviser ou modifier _ms_per_day pour être MS par minute, ou = 1000 * 60 :)



4
votes

Vous pouvez utiliser Moment angulaire pour calculer la différence, en utilisant la amdiffence < / Fort> Filtre:

Obtenez la différence entre deux dates de millisecondes. Les paramètres sont Date, parts et utilisationPrecision. Date des valeurs par défaut à la date actuelle. Exemple: xxx


0 commentaires

-1
votes

J'ai essayé le ci-dessous et cela a fonctionné pour moi xxx

la date sélectionnée est celle qui est sélectionnée dans Calender et provient de la portée des parents. Deuxième date sera la date d'aujourd'hui. Plus tard, je trouverai la différence en utilisant le moment diff. xxx

J'utilise parseint car je veux retourner la valeur entière uniquement

espoir que cela fonctionne


0 commentaires

0
votes


0 commentaires