javascript - Hämta timskillnaden mellan två datum i Moment Js
Jag kan få skillnaden mellan två datum med MomentJs på följande sätt:
moment(end.diff(startTime)).format("m[m] s[s]")
Jag vill dock också visa timmen när det är tillämpligt (endast när >= 60 minuter har gått).
Men när jag försöker hämta varaktighetstimmarna med följande:
var duration = moment.duration(end.diff(startTime));
var hours = duration.hours();
det returnerar den aktuella timmen och inte antalet timmar mellan de två datumen.
Hur får jag skillnaden i timmar mellan två Moments?
Svar #1
Du var nära. Du behöver bara använda metoden duration.asHours() (se dokumentationen).
var duration = moment.duration(end.diff(startTime));
var hours = duration.asHours();
Svar #2
Följande kodblock visar hur man beräknar skillnaden i antal dagar mellan två datum med 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)
Svar #3
Eller så kan du helt enkelt göra:
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
dokument: här
Svar #4
Det finns en fantastisk moment-metod som heter fromNow() som kommer att returnera tiden från en specifik tid i ett trevligt och lättläst format, som detta:
moment('2019-04-30T07:30:53.000Z').fromNow() // an hour ago || a day ago || 10 days ago
Eller om du vill ha det mellan två specifika datum kan du använda:
var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b); // "a day ago"
Tagen från dokumentationen:
fromNow()from()
Svar #5
Allt du behöver göra är att skicka in hours som den andra parametern till moments diff-funktion.
var a = moment([21,30,00], "HH:mm:ss")
var b = moment([09,30,00], "HH:mm:ss")
a.diff(b, 'hours') // 12
Dokumentation: https://momentjs.com/docs/#/displaying/difference/
Exempel:
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>Svar #6
Jag vet att detta är gammalt, men här är en enradslösning:
const hourDiff = start.diff(end, "hours");
Där start och end är momentobjekt.
