Skip to content

Instantly share code, notes, and snippets.

@matthewoestreich
Last active March 2, 2021 03:08
Show Gist options
  • Save matthewoestreich/ffe7eaf7f17262c7d84cae8682d82c1b to your computer and use it in GitHub Desktop.
Save matthewoestreich/ffe7eaf7f17262c7d84cae8682d82c1b to your computer and use it in GitHub Desktop.
Get relative date from a known date. Before or after N days.
#!/usr/bin/env node
/**
* Use this function like:
* `getRelativeDate("before", 3, new Date("7/2/1992"));`
*
* @param {String} beforeOrAfter ("after"|"before")
* @param {Number} numberOfDays number of days before or after the 'date' param
* @param {Date} date the 'RelativeToDate' in 'getDateRelativeToDate'
*
* @return * If "before" or "after" is not used as the value of the `beforeOrAfter`
* param, we return `null`, otherwise we return a Date object
*/
export const getRelativeDate = (beforeOrAfter, numberOfDays, relativeDate) => {
// If the `beforeOrAfter param/variable is not either "before" or "after", return `null`
if (!['before', 'after'].includes(beforeOrAfter)) {
return null;
}
// If the consumer did not supply a `relativeDate` param, use current Date
if (!relativeDate) {
relativeDate = Date.now();
}
// If numberOfDays param not supplied, defalt to 1
if (!numberOfDays) {
numberOfDays = 1;
}
const d = new Date(relativeDate);
if (beforeOrAfter === "after") {
return new Date(d.setDate(d.getDate() + numberOfDays));
}
if (beforeOrAfter === "before") {
return new Date(d.setDate(d.getDate() - numberOfDays));
}
return null;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment