MCPcopy
hub / github.com/date-fns/date-fns / differenceInDays

Function differenceInDays

pkgs/core/src/differenceInDays/index.ts:63–90  ·  view source on GitHub ↗
(
  laterDate: DateArg<Date> & {},
  earlierDate: DateArg<Date> & {},
  options?: DifferenceInDaysOptions | undefined,
)

Source from the content-addressed store, hash-verified

61 * //=> 92
62 */
63export function differenceInDays(
64 laterDate: DateArg<Date> & {},
65 earlierDate: DateArg<Date> & {},
66 options?: DifferenceInDaysOptions | undefined,
67): number {
68 const [laterDate_, earlierDate_] = normalizeDates(
69 options?.in,
70 laterDate,
71 earlierDate,
72 );
73
74 const sign = compareLocalAsc(laterDate_, earlierDate_);
75 const difference = Math.abs(
76 differenceInCalendarDays(laterDate_, earlierDate_),
77 );
78
79 laterDate_.setDate(laterDate_.getDate() - sign * difference);
80
81 // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full
82 // If so, result must be decreased by 1 in absolute value
83 const isLastDayNotFull = Number(
84 compareLocalAsc(laterDate_, earlierDate_) === -sign,
85 );
86
87 const result = sign * (difference - isLastDayNotFull);
88 // Prevent negative zero
89 return result === 0 ? 0 : result;
90}
91
92// Like `compareAsc` but uses local time not UTC, which is needed
93// for accurate equality comparisons of UTC timestamps that end up

Callers 4

differenceInWeeksFunction · 0.90
intervalToDurationFunction · 0.90
test.tsFile · 0.90
_testFunction · 0.90

Calls 3

normalizeDatesFunction · 0.90
differenceInCalendarDaysFunction · 0.90
compareLocalAscFunction · 0.85

Tested by

no test coverage detected