UNPKG

sugar

Version:

A Javascript utility library for working with native objects.

31 lines (27 loc) 1.14 kB
'use strict'; 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;