differenceInCalendarWeeks.cjs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. exports.differenceInCalendarWeeks = differenceInCalendarWeeks;
  3. var _index = require("./_lib/getTimezoneOffsetInMilliseconds.cjs");
  4. var _index2 = require("./_lib/normalizeDates.cjs");
  5. var _index3 = require("./constants.cjs");
  6. var _index4 = require("./startOfWeek.cjs");
  7. /**
  8. * The {@link differenceInCalendarWeeks} function options.
  9. */
  10. /**
  11. * @name differenceInCalendarWeeks
  12. * @category Week Helpers
  13. * @summary Get the number of calendar weeks between the given dates.
  14. *
  15. * @description
  16. * Get the number of calendar weeks between the given dates.
  17. *
  18. * @param laterDate - The later date
  19. * @param earlierDate - The earlier date
  20. * @param options - An object with options.
  21. *
  22. * @returns The number of calendar weeks
  23. *
  24. * @example
  25. * // How many calendar weeks are between 5 July 2014 and 20 July 2014?
  26. * const result = differenceInCalendarWeeks(
  27. * new Date(2014, 6, 20),
  28. * new Date(2014, 6, 5)
  29. * )
  30. * //=> 3
  31. *
  32. * @example
  33. * // If the week starts on Monday,
  34. * // how many calendar weeks are between 5 July 2014 and 20 July 2014?
  35. * const result = differenceInCalendarWeeks(
  36. * new Date(2014, 6, 20),
  37. * new Date(2014, 6, 5),
  38. * { weekStartsOn: 1 }
  39. * )
  40. * //=> 2
  41. */
  42. function differenceInCalendarWeeks(laterDate, earlierDate, options) {
  43. const [laterDate_, earlierDate_] = (0, _index2.normalizeDates)(
  44. options?.in,
  45. laterDate,
  46. earlierDate,
  47. );
  48. const laterStartOfWeek = (0, _index4.startOfWeek)(laterDate_, options);
  49. const earlierStartOfWeek = (0, _index4.startOfWeek)(earlierDate_, options);
  50. const laterTimestamp =
  51. +laterStartOfWeek -
  52. (0, _index.getTimezoneOffsetInMilliseconds)(laterStartOfWeek);
  53. const earlierTimestamp =
  54. +earlierStartOfWeek -
  55. (0, _index.getTimezoneOffsetInMilliseconds)(earlierStartOfWeek);
  56. return Math.round(
  57. (laterTimestamp - earlierTimestamp) / _index3.millisecondsInWeek,
  58. );
  59. }