# General Translation Platform: formatRelativeTimeFromDate URL: https://generaltranslation.com/ru/docs/platform/core/reference/utility-functions/formatting/format-relative-time-from-date.mdx --- title: formatRelativeTimeFromDate description: Форматирует относительное время на основе даты без экземпляра GT. Справка по API для formatRelativeTimeFromDate. --- [`formatRelativeTimeFromDate`](/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time-from-date) — это автономная служебная функция из core library General Translation, которая форматирует строку относительного времени на основе `Date`, автоматически выбирая наиболее подходящую единицу времени (секунды, минуты, часы, дни, недели, месяцы или годы). ## Обзор [#overview] Импортируйте `formatRelativeTimeFromDate` напрямую из `generaltranslation` и вызовите её, передав `Date` и объект параметров. Для этого не требуется API-ключ или экземпляр [GT](/docs/platform/core/reference/gt-class/constructor). Если нужно форматирование через экземпляр с наследованием его локали, используйте метод [`formatRelativeTimeFromDate`](/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time-from-date) у экземпляра [`GT`](/docs/platform/core/reference/gt-class/constructor). Чтобы самостоятельно задать значение и единицу времени, используйте [`formatRelativeTime`](/docs/platform/core/reference/utility-functions/formatting/format-relative-time). ```typescript import { formatRelativeTimeFromDate } from 'generaltranslation'; const pastDate = new Date(Date.now() - 7200000); // 2 часа назад const formatted = formatRelativeTimeFromDate(pastDate, { locales: 'en-US', baseDate: new Date(), }); // Возвращает: "2 hours ago" ``` Сигнатура: ```typescript formatRelativeTimeFromDate( date: Date, options?: { locales?: string | string[] } & Omit & { baseDate?: Date } ): string ``` ## Как это работает [#how-it-works] * **Выбор единицы времени.** Автоматически выбирает наиболее подходящую единицу времени на основе разницы между `date` и `baseDate`. * **Используемый API.** Внутри использует [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat). * **Числовой режим.** По умолчанию используются `numeric: 'auto'` и `style: 'long'`. * **Базовая дата по умолчанию.** Если `baseDate` не указана, по умолчанию используется `new Date()`. Имейте в виду, что это может привести к несоответствиям при гидратации в приложениях с серверным рендерингом. * **Определение локали.** Если `locales` не указан, используется локаль библиотеки по умолчанию — `en`. ## Параметры [#parameters] | Параметр | Описание | Type | Необязательный | По умолчанию | | --------------------- | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- | -------------- | ------------ | | [`date`](#date) | Дата, которую нужно отформатировать относительно `baseDate`. | `Date` | Нет | — | | [`options`](#options) | Параметры форматирования, включая целевые локали и базовую дату для сравнения. | `{ locales?: string \| string[] } & Omit & { baseDate?: Date }` | Да | `{}` | ### `date` [#date] **Тип** `Date` · **Обязательно** Объект `Date`, который нужно отформатировать относительно `baseDate`. ### `options` [#options] **Тип** `{ locales?: string | string[] } & Omit & { baseDate?: Date }` · **Необязательно** · **По умолчанию** `{}` Параметры форматирования: | Свойство | Описание | Тип | Необязательно | По умолчанию | | --------------- | ---------------------------------------------- | ------------------------------- | ------------- | ------------ | | `locales` | Локали для форматирования. | `string \| string[]` | Да | `en` | | `baseDate` | Базовая дата для сравнения. | `Date` | Да | `new Date()` | | `numeric` | Всегда ли использовать числовой формат вывода. | `'always' \| 'auto'` | Да | `'auto'` | | `style` | Длина итогового значения. | `'long' \| 'short' \| 'narrow'` | Да | `'long'` | | `localeMatcher` | Используемый алгоритм подбора локали. | `'best fit' \| 'lookup'` | Да | `'best fit'` | ## Возвращает [#returns] **Тип** `string` Строка с отформатированным относительным временем (например, «2 часа назад», «через 3 дня»). ## Примеры [#examples] ```typescript import { formatRelativeTimeFromDate } from 'generaltranslation'; const now = new Date(); // 2 часа назад const pastDate = new Date(now.getTime() - 7200000); console.log(formatRelativeTimeFromDate(pastDate, { locales: 'en-US', baseDate: now, })); // Вывод: "2 hours ago" // 3 дня в будущем const futureDate = new Date(now.getTime() + 259200000); console.log(formatRelativeTimeFromDate(futureDate, { locales: 'en-US', baseDate: now, })); // Вывод: "in 3 days" ``` ```typescript // Несколько локалей const pastDate = new Date(Date.now() - 86400000); // ~1 день назад const now = new Date(); const locales = ['en-US', 'fr-FR', 'ja-JP', 'de-DE']; locales.forEach((locale) => { console.log(`${locale}: ${formatRelativeTimeFromDate(pastDate, { locales: locale, baseDate: now, })}`); }); // Вывод: // en-US: yesterday // fr-FR: hier // ja-JP: 昨日 // de-DE: gestern ``` ## Примечания [#notes] * Автоматически выбирает наиболее подходящую единицу времени на основе разницы между `date` и `baseDate`. * По умолчанию используются значения `numeric: 'auto'` и `style: 'long'`. * Если `baseDate` не указана, по умолчанию используется `new Date()` — имейте в виду, что это может привести к ошибкам hydration в приложениях с серверным рендерингом. * Внутри использует [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat).