javascript - obtener - moment js fecha
Consigue diferencia de horas entre dos fechas en Moment Js (7)
Puedo obtener la diferencia entre dos fechas usando MomentJs de la siguiente manera:
moment(end.diff(startTime)).format("m[m] s[s]")
Sin embargo, también quiero mostrar la hora cuando corresponda (solo cuando hayan transcurrido> = 60 minutos).
Sin embargo, cuando intento recuperar las horas de duración utilizando lo siguiente:
var duration = moment.duration(end.diff(startTime));
var hours = duration.hours();
está devolviendo la hora actual y no el número de horas entre las dos fechas.
¿Cómo obtengo la diferencia en horas entre dos Momentos?
El siguiente bloque de código muestra cómo calcular la diferencia en el número de días entre dos fechas utilizando MomentJS.
var now = moment(new Date()); //todays date
var end = moment("2015-12-1"); // another date
var duration = moment.duration(now.diff(end));
var days = duration.asDays();
console.log(days)
Estabas cerca Solo necesita utilizar el método duration.asHours()
(consulte la documentación ).
var duration = moment.duration(end.diff(startTime));
var hours = duration.asHours();
O puedes hacer simplemente:
var a = moment(''2016-06-06T21:03:55'');//now
var b = moment(''2016-05-06T20:03:55'');
console.log(a.diff(b, ''minutes'')) // 44700
console.log(a.diff(b, ''hours'')) // 745
console.log(a.diff(b, ''days'')) // 31
console.log(a.diff(b, ''weeks'')) // 4
docs: here
Todo lo que necesita hacer es pasar en hours
como el segundo parámetro para la función de diferencia de momentos.
var a = moment([21,30,00], "HH:mm:ss")
var b = moment([09,30,00], "HH:mm:ss")
a.diff(b, ''hours'') // 12
Docs: https://momentjs.com/docs/#/displaying/difference/
Ejemplo:
const dateFormat = "YYYY-MM-DD HH:mm:ss";
// Get your start and end date/times
const rightNow = moment().format(dateFormat);
const thisTimeYesterday = moment().subtract(1, ''days'').format(dateFormat);
// pass in hours as the second parameter to the diff function
const differenceInHours = moment(rightNow).diff(thisTimeYesterday, ''hours'');
console.log(`${differenceInHours} hours have passed since this time yesterday`);
<script
src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js">
</script>
var timecompare = {
tstr: "",
get: function (current_time, startTime, endTime) {
this.tstr = "";
var s = current_time.split(":"), t1 = tm1.split(":"), t2 = tm2.split(":"), t1s = Number(t1[0]), t1d = Number(t1[1]), t2s = Number(t2[0]), t2d = Number(t2[1]);
if (t1s < t2s) {
this.t(t1s, t2s);
}
if (t1s > t2s) {
this.t(t1s, 23);
this.t(0, t2s);
}
var saat_dk = Number(s[1]);
if (s[0] == tm1.substring(0, 2) && saat_dk >= t1d)
return true;
if (s[0] == tm2.substring(0, 2) && saat_dk <= t2d)
return true;
if (this.tstr.indexOf(s[0]) != 1 && this.tstr.indexOf(s[0]) != -1 && !(this.tstr.indexOf(s[0]) == this.tstr.length - 2))
return true;
return false;
},
t: function (ii, brk) {
for (var i = 0; i <= 23; i++) {
if (i < ii)
continue;
var s = (i < 10) ? "0" + i : i + "";
this.tstr += "," + s;
if (brk == i)
break;
}
}};
var start=moment(1541243900000);
var end=moment(1541243942882);
var duration = moment.duration(end.diff(startTime));
var hours = duration.asHours();
Como puede ver, la fecha de inicio y finalización deben ser objetos de momento para que este método funcione.
var __startTime = moment("2016-06-06T09:00").format();
var __endTime = moment("2016-06-06T21:00").format();
var __duration = moment.duration(moment(__endTime).diff(__startTime));
var __hours = __duration.asHours();
console.log(__hours);