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

Function intlFormatDistance

pkgs/core/src/intlFormatDistance/index.ts:142–225  ·  view source on GitHub ↗
(
  laterDate: DateArg<Date> & {},
  earlierDate: DateArg<Date> & {},
  options?: IntlFormatDistanceOptions,
)

Source from the content-addressed store, hash-verified

140 * //=> 'in 2 yr'
141 */
142export function intlFormatDistance(
143 laterDate: DateArg<Date> & {},
144 earlierDate: DateArg<Date> & {},
145 options?: IntlFormatDistanceOptions,
146): string {
147 let value: number = 0;
148 let unit: Intl.RelativeTimeFormatUnit;
149
150 const [laterDate_, earlierDate_] = normalizeDates(
151 options?.in,
152 laterDate,
153 earlierDate,
154 );
155
156 if (!options?.unit) {
157 // Get the unit based on diffInSeconds calculations if no unit is specified
158 const diffInSeconds = differenceInSeconds(laterDate_, earlierDate_); // The smallest unit
159
160 if (Math.abs(diffInSeconds) < secondsInMinute) {
161 value = differenceInSeconds(laterDate_, earlierDate_);
162 unit = "second";
163 } else if (Math.abs(diffInSeconds) < secondsInHour) {
164 value = differenceInMinutes(laterDate_, earlierDate_);
165 unit = "minute";
166 } else if (
167 Math.abs(diffInSeconds) < secondsInDay &&
168 Math.abs(differenceInCalendarDays(laterDate_, earlierDate_)) < 1
169 ) {
170 value = differenceInHours(laterDate_, earlierDate_);
171 unit = "hour";
172 } else if (
173 Math.abs(diffInSeconds) < secondsInWeek &&
174 (value = differenceInCalendarDays(laterDate_, earlierDate_)) &&
175 Math.abs(value) < 7
176 ) {
177 unit = "day";
178 } else if (Math.abs(diffInSeconds) < secondsInMonth) {
179 value = differenceInCalendarWeeks(laterDate_, earlierDate_);
180 unit = "week";
181 } else if (Math.abs(diffInSeconds) < secondsInQuarter) {
182 value = differenceInCalendarMonths(laterDate_, earlierDate_);
183 unit = "month";
184 } else if (Math.abs(diffInSeconds) < secondsInYear) {
185 if (differenceInCalendarQuarters(laterDate_, earlierDate_) < 4) {
186 // To filter out cases that are less than a year but match 4 quarters
187 value = differenceInCalendarQuarters(laterDate_, earlierDate_);
188 unit = "quarter";
189 } else {
190 value = differenceInCalendarYears(laterDate_, earlierDate_);
191 unit = "year";
192 }
193 } else {
194 value = differenceInCalendarYears(laterDate_, earlierDate_);
195 unit = "year";
196 }
197 } else {
198 // Get the value if unit is specified
199 unit = options?.unit;

Callers 2

test.tsFile · 0.90
_testFunction · 0.90

Calls 9

normalizeDatesFunction · 0.90
differenceInSecondsFunction · 0.90
differenceInMinutesFunction · 0.90
differenceInCalendarDaysFunction · 0.90
differenceInHoursFunction · 0.90

Tested by

no test coverage detected