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

Function formatRelative

pkgs/core/src/formatRelative/index.ts:57–101  ·  view source on GitHub ↗
(
  date: DateArg<Date> & {},
  baseDate: DateArg<Date> & {},
  options?: FormatRelativeOptions,
)

Source from the content-addressed store, hash-verified

55 * //=> "last Thursday at 12:45 AM"
56 */
57export function formatRelative(
58 date: DateArg<Date> & {},
59 baseDate: DateArg<Date> & {},
60 options?: FormatRelativeOptions,
61): string {
62 const [date_, baseDate_] = normalizeDates(options?.in, date, baseDate);
63
64 const defaultOptions = getDefaultOptions();
65 const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;
66 const weekStartsOn =
67 options?.weekStartsOn ??
68 options?.locale?.options?.weekStartsOn ??
69 defaultOptions.weekStartsOn ??
70 defaultOptions.locale?.options?.weekStartsOn ??
71 0;
72
73 const diff = differenceInCalendarDays(date_, baseDate_);
74
75 if (isNaN(diff)) {
76 throw new RangeError("Invalid time value");
77 }
78
79 let token: FormatRelativeToken;
80 if (diff < -6) {
81 token = "other";
82 } else if (diff < -1) {
83 token = "lastWeek";
84 } else if (diff < 0) {
85 token = "yesterday";
86 } else if (diff < 1) {
87 token = "today";
88 } else if (diff < 2) {
89 token = "tomorrow";
90 } else if (diff < 7) {
91 token = "nextWeek";
92 } else {
93 token = "other";
94 }
95
96 const formatStr = locale.formatRelative(token, date_, baseDate_, {
97 locale,
98 weekStartsOn,
99 });
100 return format(date_, formatStr, { locale, weekStartsOn });
101}

Callers 3

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

Calls 4

normalizeDatesFunction · 0.90
getDefaultOptionsFunction · 0.90
differenceInCalendarDaysFunction · 0.90
formatFunction · 0.90

Tested by

no test coverage detected