Je veux trouver la différence entre deux dates. J'ai essayé ce code mais il me donne de mauvaises valeurs. Je veux avoir un total de minutes entre deux dates, donc je convertis des heures en minutes et en ajoute des minutes.
var hourDiff = timeEnd - timeStart;
var diffHrs = Math.round((hourDiff % 86400000) / 3600000);
var diffMins = Math.round(((hourDiff % 86400000) % 3600000) / 60000);
diffMins = diffMins + (diffHrs * 60);
Ici timeEnd
est Mon Jan 01 2007 11:30:00 GMT+0530 (India Standard Time)
,
et timeStart
est Mon Jan 01 2007 11:00:00 GMT+0530 (India Standard Time)
.
Ici, si la différence d'heures, j'obtiens 1
, ce devrait être 0
et les minutes que j'obtiens 30
sont exactes. Mais les heures devraient être 0
. Est-ce que je fais quelque chose de mal ici?
Essayer:
var diffHrs = Math.floor((hourDiff % 86400000) / 3600000);
Math.round
a arrondi la différence 0.5
heure à 1
. Vous voulez seulement obtenir les heures "complètes" dans votre variable d'heures, supprimez-vous toutes les minutes de la variable avec la fonction Math.floor()
Essayez ce code (utilise ms comme unités initiales)
var timeStart = new Date("Mon Jan 01 2007 11:00:00 GMT+0530").getTime();
var timeEnd = new Date("Mon Jan 01 2007 11:30:00 GMT+0530").getTime();
var hourDiff = timeEnd - timeStart; //in ms
var secDiff = hourDiff / 1000; //in s
var minDiff = hourDiff / 60 / 1000; //in minutes
var hDiff = hourDiff / 3600 / 1000; //in hours
var humanReadable = {};
humanReadable.hours = Math.floor(hDiff);
humanReadable.minutes = minDiff - 60 * humanReadable.hours;
console.log(humanReadable); //{hours: 0, minutes: 30}
JSFiddle: http://jsfiddle.net/n2WgW/
Essaye ça:
var startDate = new Date('Jan 01 2007 11:00:00');
var endDate = new Date('Jan 01 2007 11:30:00');
var starthour = parseInt(startDate.getHours());
var endhour = parseInt(endDate.getHours());
if(starthour>endhour){
alert('Hours diff:' + parseInt(starthour-endhour));
}
else{
alert('Hours diff:' + parseInt(endhour-starthour));
}
Et voici le travail violon .
Vous pouvez essayer ceci: -
function diff_hours(dt2, dt1)
{
var diff =(dt2.getTime() - dt1.getTime()) / 1000;
diff /= (60 * 60); // For Hours
//diff /= (60); For Minutes
return Math.abs(Math.round(diff));
}
dt1 = new Date(2014,10,2);
dt2 = new Date(2014,10,3);
console.log(diff_hours(dt1, dt2)); // you will get '24' hours
dt1 = new Date("October 13, 2014 08:11:00");
dt2 = new Date("October 13, 2014 11:13:00");
console.log(diff_hours(dt1, dt2)); // you will get '3' hours
var timeDiff = function (date1, date2) {
var a = new Date(date1).getTime(),
b = new Date(date2).getTime(),
diff = {};
diff.milliseconds = a > b ? a % b : b % a;
diff.seconds = diff.milliseconds / 1000;
diff.minutes = diff.seconds / 60;
diff.hours = diff.minutes / 60;
diff.days = diff.hours / 24;
diff.weeks = diff.days / 7;
return diff;
}
Vous pouvez obtenir le décalage horaire en heures minutes et secondes comme compte à rebours en utilisant les méthodes suivantes:
var diff = EndedTime - StartedTime;
var hours = Math.floor(diff / 3.6e6);
var minutes = Math.floor((diff % 3.6e6) / 6e4);
var seconds = Math.floor((diff % 6e4) / 1000);
var duration = hours+":"+minutes+":"+seconds;
J'espère que cette aide. Merci
Si vous êtes sûr que la différence sera inférieure à 24 heures, voici ce qui fonctionne.
var timeStart= new Date('2015-01-01 03:45:45.890');
var timeEnd = new Date('2015-01-01 05:12:34.567');
var timeDiff = new Date(timeEnd.getTime() - timeStart.getTime());
var humanTime = timeDiff.toISOString().substring(11, 23);
var diffHours = timeDiff.toISOString().substring(11, 12);
humanTime est 01: 26: 48.677, diffHours est 01