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

Function intervalToDuration

pkgs/core/src/intervalToDuration/index.ts:37–68  ·  view source on GitHub ↗
(
  interval: Interval,
  options?: IntervalToDurationOptions | undefined,
)

Source from the content-addressed store, hash-verified

35 * //=> { years: 39, months: 2, days: 20, hours: 7, minutes: 5, seconds: 0 }
36 */
37export function intervalToDuration(
38 interval: Interval,
39 options?: IntervalToDurationOptions | undefined,
40): Duration {
41 const { start, end } = normalizeInterval(options?.in, interval);
42 const duration: Duration = {};
43
44 const years = differenceInYears(end, start);
45 if (years) duration.years = years;
46
47 const remainingMonths = add(start, { years: duration.years });
48 const months = differenceInMonths(end, remainingMonths);
49 if (months) duration.months = months;
50
51 const remainingDays = add(remainingMonths, { months: duration.months });
52 const days = differenceInDays(end, remainingDays);
53 if (days) duration.days = days;
54
55 const remainingHours = add(remainingDays, { days: duration.days });
56 const hours = differenceInHours(end, remainingHours);
57 if (hours) duration.hours = hours;
58
59 const remainingMinutes = add(remainingHours, { hours: duration.hours });
60 const minutes = differenceInMinutes(end, remainingMinutes);
61 if (minutes) duration.minutes = minutes;
62
63 const remainingSeconds = add(remainingMinutes, { minutes: duration.minutes });
64 const seconds = differenceInSeconds(end, remainingSeconds);
65 if (seconds) duration.seconds = seconds;
66
67 return duration;
68}

Callers 3

test.tsFile · 0.90
_testFunction · 0.90
test.tsFile · 0.90

Calls 8

normalizeIntervalFunction · 0.90
differenceInYearsFunction · 0.90
addFunction · 0.90
differenceInMonthsFunction · 0.90
differenceInDaysFunction · 0.90
differenceInHoursFunction · 0.90
differenceInMinutesFunction · 0.90
differenceInSecondsFunction · 0.90

Tested by

no test coverage detected