Comparer 2 ISO 8601 les horodatages et de sortie des secondes/minutes de différence
J'ai besoin d'écrire du code JavaScript qui va me permettre de comparer deux ISO horodateurs et ensuite, imprimez la différence entre eux, par exemple: "32 secondes".
Ci-dessous est une fonction que j'ai trouvé sur un Débordement de Pile, il transforme l'ordinaire en date en ISO formaté un. Donc, c'est la première chose que la route, obtenir l'heure courante au format ISO.
La prochaine chose à faire est d'obtenir un autre ISO horodatage à comparer avec, eh bien, je l'ai stocké dans un objet. Il peut être accédé comme ceci: marqueur.timestamp (comme indiqué dans le code ci-dessous). Maintenant, j'ai besoin de comparer deux à deux les horodatages et de travailler sur la différence entre eux. Si c'est < 60 secondes, il devrait sortir en quelques secondes, si c'est > 60 secondes, il devrait de sortie de 1 minute et 12 secondes plus tôt par exemple.
Merci!
function ISODateString(d){
function pad(n){return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'}
var date = new Date();
var currentISODateTime = ISODateString(date);
var ISODateTimeToCompareWith = marker.timestamp;
//Now how do I compare them?
- Donc, vous voulez comparer
currentISODateTime
avecISODateTimeToCompareWith
et ils sont tous les deux au format ISO 8601? - Oui, exactement, alors la sortie de la différence entre eux. Ils sont tous les deux au format ISO 8601.
Vous devez vous connecter pour publier un commentaire.
De la comparaison de deux dates, c'est aussi simple que
Donc, convertir les horodatages de retour dans Date instances
Obtenir la différence
Format de ce que désiré
Je voudrais juste stocker la Date de l'objet dans le cadre de votre ISODate classe. Il vous suffit de faire la conversion de chaîne de caractères lorsque vous avez besoin de l'afficher, par exemple dans une
toString
méthode. De cette façon, vous pouvez simplement utiliser très simple logique avec la classe Date à déterminer la différence entre les deux Datesiso:Je vous recommande d'entrer le temps en secondes à partir de deux timestamps, comme ceci:
Et puis travailler avec la
difference
. Par exemple:Important: j'ai utilisé
Math.abs
de comparer les dates en quelques secondes afin d'obtenir la différence absolue entre eux, indépendamment de ce qui est plus tôt.(new Date(ISO)).getTime()
par 1000 au lieu de multiplier par 1000 pour obtenir la valeur en secondes.