isBetween.ts 727 B

12345678910111213141516
  1. import { isWithinInterval, parseISO, isEqual, isBefore } from 'date-fns';
  2. import isString from '../../utils/isString';
  3. /**
  4. * is the date between start and end?(not including start and end)
  5. * - if start > end, return false
  6. * @param {String|Date} day
  7. * @param {Object} { start: string|Date, end: string|Date}
  8. * @returns {Boolean}
  9. */
  10. export default function isBetween(day: string | Date, { start, end }: { start: string | Date; end: string | Date }) {
  11. const d = isString(day) ? parseISO(day) : day;
  12. const s = isString(start) ? parseISO(start) : start;
  13. const e = isString(end) ? parseISO(end) : end;
  14. return isBefore(s, e) && isWithinInterval(d, { start: s, end: e }) && !isEqual(d, s) && !isEqual(d, e);
  15. }