sugar
Version:
A Javascript utility library for working with native objects.
31 lines (27 loc) • 1.14 kB
JavaScript
;
var getNewDate = require('./getNewDate'),
mathAliases = require('../../common/var/mathAliases'),
getAdjustedUnit = require('./getAdjustedUnit'),
getTimeDistanceForUnit = require('./getTimeDistanceForUnit');
var abs = mathAliases.abs;
function getAdjustedUnitForDate(d, dRelative) {
var ms;
if (!dRelative) {
dRelative = getNewDate();
if (d > dRelative) {
// If our date is greater than the one that we got from getNewDate, it
// means that we are finding the unit for a date that is in the future
// relative to now. However, often the incoming date was created in
// the same cycle as our comparison, but our "now" date will have been
// created an instant after it, creating situations where "5 minutes from
// now" becomes "4 minutes from now" in the same tick. To prevent this,
// subtract a buffer of 10ms to compensate.
dRelative = new Date(dRelative.getTime() - 10);
}
}
ms = d - dRelative;
return getAdjustedUnit(ms, function(u) {
return abs(getTimeDistanceForUnit(d, dRelative, u));
});
}
module.exports = getAdjustedUnitForDate;