12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { toDate } from "./toDate.js";
- /**
- * The {@link isWithinInterval} function options.
- */
- /**
- * @name isWithinInterval
- * @category Interval Helpers
- * @summary Is the given date within the interval?
- *
- * @description
- * Is the given date within the interval? (Including start and end.)
- *
- * @param date - The date to check
- * @param interval - The interval to check
- * @param options - An object with options
- *
- * @returns The date is within the interval
- *
- * @example
- * // For the date within the interval:
- * isWithinInterval(new Date(2014, 0, 3), {
- * start: new Date(2014, 0, 1),
- * end: new Date(2014, 0, 7)
- * })
- * // => true
- *
- * @example
- * // For the date outside of the interval:
- * isWithinInterval(new Date(2014, 0, 10), {
- * start: new Date(2014, 0, 1),
- * end: new Date(2014, 0, 7)
- * })
- * // => false
- *
- * @example
- * // For date equal to the interval start:
- * isWithinInterval(date, { start, end: date })
- * // => true
- *
- * @example
- * // For date equal to the interval end:
- * isWithinInterval(date, { start: date, end })
- * // => true
- */
- export function isWithinInterval(date, interval, options) {
- const time = +toDate(date, options?.in);
- const [startTime, endTime] = [
- +toDate(interval.start, options?.in),
- +toDate(interval.end, options?.in),
- ].sort((a, b) => a - b);
- return time >= startTime && time <= endTime;
- }
- // Fallback for modularized imports:
- export default isWithinInterval;
|