2023-03-29 15:20:05 +00:00

58 lines
1.8 KiB
JavaScript
Vendored

var dates = require('./.internal/dates');
/**
* Difference between dates which are passed, in formats 'milliseconds', 'days', 'hours', 'minutes'
*
* @customNeeds -
*
* @since 2.0.0
* @category Date
*
* @param {Date} date1 - The Date for compare
* @param {Date} date2 - The Date for compare
* @param {String} differenceType - [ 'days', 'hours', 'minutes', 'milliseconds', 'all' ]
*
* @returns {Number|Object} Returns the numeric value or object depends on passed differenceType param
*
* @example
*
* famulus.dateDifference(new Date('06-20-2018'), new Date('06-26-2018'), 'days')
* // => 6
*
* famulus.dateDifference(new Date('06-20-2018'), new Date('06-26-2018'), 'hours')
* // => 144
*
* famulus.dateDifference(new Date('06-20-2018'), new Date('06-26-2018'), 'minutes')
* // => 8640
*
* famulus.dateDifference(new Date('06-26-2018'), new Date('06-20-2018'), 'milliseconds')
* // => 518400000
*
* famulus.dateDifference(new Date('06-26-2018 10:10'), new Date('06-20-2018 08:00'), 'all')
* // => {days: 6, hours: 2, minutes: 10, milliseconds: 526200000}
*/
function dateDifference(date1, date2, differenceType) {
var diffMilliseconds = Math.abs(date1 - date2);
switch(differenceType) {
case 'days':
return dates._getDaysDiff(diffMilliseconds);
case 'hours':
return dates._differenceInHours(diffMilliseconds);
case 'minutes':
return dates._differenceInMinutes(diffMilliseconds);
case 'milliseconds':
return diffMilliseconds;
default:
return {
days: dates._getDaysDiff(diffMilliseconds),
hours: dates._getHoursDiff(diffMilliseconds),
minutes: dates._getMinutesDiff(diffMilliseconds),
milliseconds: diffMilliseconds
}
}
}
module.exports = dateDifference;