2017-09-01 4 views
0

j'ai deux ramasseurs DateTime qui est recodeStartTime et recodeEndTime, je veux montrer le total des heures entre les temps ci-dessus à l'aide moment.js. Cependant, lorsque je tente de récupérer la différence en utilisant les éléments suivants:s'invalied différence entre deux sélecteur DateTime en utilisant « » momentjs

var calculateTime = function() { 
    var startTime = $('#recordStartTime').val(); 
    var endTime = $('#recordEndTime').val(); 
    var totalTime = moment.utc(moment(endTime,"YYYY-MM-DD HH:mm:ss").diff(moment(startTime,"YYYY-MM-DD HH:mm:ss"))).format("HH:mm:ss"); 
    $('#recordRegularHours').val(totalTime); 
}; 

Ex: recodeStartTime = 01/09/2017 08h40, recodeEndTime = 01/09/2017 17:45

résultat: 21:05:00

Il retourne le décalage horaire invalide. Comment puis-je obtenir la différence en heures entre deux moments?

+0

Votre code donne '21: 05: 00 'pour' recodeStartTime = 01/09/2017 08h40, recodeEndTime = 01/09/2017 05:45 PM', quelle est exactement votre problème? – VincenzoC

+0

La différence devrait être comme 09:05:00 @VincenzoC – rokz92

Répondre

1

Vous pouvez créer un duration de la sortie de moment diff, vous pouvez utiliser moment-duration-format plug-in. Le plug-in ajoute la méthode format à la durée, de sorte que vous pouvez utiliser format('HH:mm:ss') pour obtenir la sortie dans le format souhaité (09:05:00 dans votre cas).

Voici un échantillon de travail:

var calculateTime = function() { 
 
    var startTime = $('#recordStartTime').val(); 
 
    var endTime = $('#recordEndTime').val(); 
 

 
    var diff = moment(endTime,"YYYY-MM-DD HH:mm A").diff(moment(startTime,"YYYY-MM-DD HH:mm A")); 
 
    var dur = moment.duration(diff); 
 
    var totalTime = dur.format('HH:mm:ss') 
 
    $('#recordRegularHours').val(totalTime); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script> 
 

 
<input type="text" id="recordStartTime" value="2017-09-01 08:40 AM"> 
 
<input type="text" id="recordEndTime" value="2017-09-01 05:45 PM"> 
 

 
<input type="text" id="recordRegularHours" readonly> 
 

 
<button type="button" onclick="calculateTime()">Calulate Diff</button>

Notez que vous devez utiliser "YYYY-MM-DD HH:mm A" au lieu de "YYYY-MM-DD HH:mm:ss" pour analyser correctement comme entrée 2017-09-01 08:40 AM.

Si vous ne voulez pas ajouter plug-in instant durée format, vous pouvez utiliser getters durée (hours(), minutes(), seconds()).