differenceInCalendarMonths.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { normalizeDates } from "./_lib/normalizeDates.js";
  2. /**
  3. * The {@link differenceInCalendarMonths} function options.
  4. */
  5. /**
  6. * @name differenceInCalendarMonths
  7. * @category Month Helpers
  8. * @summary Get the number of calendar months between the given dates.
  9. *
  10. * @description
  11. * Get the number of calendar months between the given dates.
  12. *
  13. * @param laterDate - The later date
  14. * @param earlierDate - The earlier date
  15. * @param options - An object with options
  16. *
  17. * @returns The number of calendar months
  18. *
  19. * @example
  20. * // How many calendar months are between 31 January 2014 and 1 September 2014?
  21. * const result = differenceInCalendarMonths(
  22. * new Date(2014, 8, 1),
  23. * new Date(2014, 0, 31)
  24. * )
  25. * //=> 8
  26. */
  27. export function differenceInCalendarMonths(laterDate, earlierDate, options) {
  28. const [laterDate_, earlierDate_] = normalizeDates(
  29. options?.in,
  30. laterDate,
  31. earlierDate,
  32. );
  33. const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();
  34. const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();
  35. return yearsDiff * 12 + monthsDiff;
  36. }
  37. // Fallback for modularized imports:
  38. export default differenceInCalendarMonths;