2017-05-02 2 views
4

Je dois comparer deux chaînes de date/heure différentes (formé: AAAA-MM-JJ'T'HH: mm).JavaScript - différence entre deux chaînes de temps

Voici les chaînes datetime:

var a = ("2017-05-02T10:45"); 
var b = ("2017-05-02T12:15"); 

J'ai coupé en tranches les dates sur les donc je ne ont besoin de temps (formé: HH: mm).

var now = a.slice(11, 16); 
var then = b.slice(11, 16); 

// now = 10:45 
// then = 12:15 

Y at-il un moyen de faire la différence entre ces deux temps?

Résultat devrait ressembler à ceci:

1 hour 30 minutes 

Aussi, si les dates sont différentes est-il une solution facile à obtenir aussi la différence de date?

+0

sidenote: En fait, ce sont la date/time strings, ** not ** timestamps – hindmost

+0

@hindmost Merci, corrigé le titre – IlariM

+0

Je vous suggère fortement d'utiliser [Moment.js] (https://momentjs.com/) pour formater les dates/différences de dates. – hindmost

Répondre

0

Cela devrait vous aider à démarrer:

d1 = new Date(Date.parse("2017-05-02T10:45")); 
 
d2 = new Date(Date.parse("2017-05-02T12:15")); 
 

 
var getDuration = function(d1, d2) { 
 
    d3 = new Date(d2 - d1); 
 
    d0 = new Date(0); 
 

 
    return { 
 
     getHours: function(){ 
 
      return d3.getHours() - d0.getHours(); 
 
     }, 
 
     getMinutes: function(){ 
 
      return d3.getMinutes() - d0.getMinutes(); 
 
     }, 
 
     getMilliseconds: function() { 
 
      return d3.getMilliseconds() - d0.getMilliseconds(); 
 
     }, 
 
     toString: function(){ 
 
      return this.getHours() + ":" + 
 
        this.getMinutes() + ":" + 
 
        this.getMilliseconds(); 
 
     }, 
 
    }; 
 
} 
 

 
diff = getDuration(d1, d2); 
 

 
console.log(diff.toString());

ou utiliser momentjs parce que, 1. il est bien testé et les bugs sont suivis. 2. Coder à partir de zéro est une expérience d'apprentissage amusante, mais si vous êtes dans un environnement d'entreprise, le codage à partir de zéro va perdre du temps (et donc de l'argent).

+0

Merci, cela a bien fonctionné. – IlariM

+0

de rien. Coder à partir de zéro est une expérience d'apprentissage amusante, mais je vous suggère vraiment d'utiliser [momentjs] (http://momentjs.com/) – mika

+0

'new Date (Date.parse (" 2017-05-02T10: 45 "))' est identique à 'new Date (" 2017-05-02T10: 45 ")', juste plus à taper. Cela échoue également si la durée est supérieure à 24 heures. Il vaut mieux obtenir la différence en millisecondes puis convertir manuellement au format d'heure requis. – RobG

3

utilisation javascript Date:

var a = ("2017-05-02T10:45"); 
var b = ("2017-05-02T12:15"); 
var milliseconds = ((new Date(a)) - (new Date(b))); 

var minutes = milliseconds/(60000);