Last active
March 2, 2021 03:08
-
-
Save matthewoestreich/ffe7eaf7f17262c7d84cae8682d82c1b to your computer and use it in GitHub Desktop.
Get relative date from a known date. Before or after N days.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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