--- category: Time --- # useTimeAgoIntl Reactive time ago with i18n supported. Automatically update the time ago string when the time changes. Powered by `Intl.RelativeTimeFormat`. ## Usage ```js import { useTimeAgoIntl } from '@vueuse/core'; const timeAgoIntl = useTimeAgoIntl(new Date(2021, 0, 1)); ``` ## Non-Reactivity Usage In case you don't need the reactivity, you can use the `formatTimeAgo` function to get the formatted string instead of a Ref. ```js import { formatTimeAgoIntl } from '@vueuse/core'; const timeAgoIntl = formatTimeAgoIntl(new Date(2021, 0, 1)); // string ``` ## Type Declarations ```ts type Locale = Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale; export interface FormatTimeAgoIntlOptions { /** * The locale to format with * * @default undefined * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#locales */ locale?: Locale; /** * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#options */ relativeTimeFormatOptions?: Intl.RelativeTimeFormatOptions; /** * Whether to insert spaces between parts. * * Ignored if `joinParts` is provided. * * @default true */ insertSpace?: boolean; /** * Custom function to join the parts returned by `Intl.RelativeTimeFormat.formatToParts`. * * If provided, it will be used instead of the default join logic. */ joinParts?: ( parts: Intl.RelativeTimeFormatPart[], locale?: Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale, ) => string; /** * Custom units */ units?: TimeAgoUnit[]; } export interface UseTimeAgoIntlOptions extends FormatTimeAgoIntlOptions { /** * Expose more controls and the raw `parts` result. * * @default false */ controls?: Controls; /** * Update interval in milliseconds, set 0 to disable auto update * * @default 30_000 */ updateInterval?: number; } type UseTimeAgoReturn = Controls extends true ? { timeAgoIntl: ComputedRef; parts: ComputedRef; } & Pausable : ComputedRef; export interface TimeAgoUnit { name: Intl.RelativeTimeFormatUnit; ms: number; } /** * A reactive wrapper for `Intl.RelativeTimeFormat`. */ export declare function useTimeAgoIntl( time: MaybeRefOrGetter, options?: UseTimeAgoIntlOptions, ): UseTimeAgoReturn; export declare function useTimeAgoIntl( time: MaybeRefOrGetter, options: UseTimeAgoIntlOptions, ): UseTimeAgoReturn; /** * Non-reactive version of useTimeAgoIntl */ export declare function formatTimeAgoIntl( from: Date, options?: FormatTimeAgoIntlOptions, now?: Date | number, ): string; /** * Format parts into a string */ export declare function formatTimeAgoIntlParts( parts: Intl.RelativeTimeFormatPart[], options?: FormatTimeAgoIntlOptions, ): string; ```