# generaltranslation: General Translation Core SDK: formatRelativeTimeFromDate URL: https://generaltranslation.com/ru/docs/core/functions/formatting/format-relative-time-from-date.mdx --- title: formatRelativeTimeFromDate description: Автономная функция для форматирования относительного времени на основе Date с автоматическим выбором наиболее подходящей единицы --- ## Обзор Автономная функция `formatRelativeTimeFromDate` форматирует строку с относительным временем на основе `Date`, автоматически выбирая наиболее подходящую единицу измерения (секунды, минуты, часы, дни, недели, месяцы или годы). ```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" ``` ## Справка ### Параметры | Имя | Тип | Описание | | --------- | -------- | ----------------------------------------------------------- | | `date` | `Date` | Дата, которую нужно отформатировать относительно `baseDate` | | `options` | `object` | Конфигурация форматирования | ### Параметры | Имя | Тип | Описание | | ---------------- | ------------------------------- | ---------------------------------------------------------------------------- | | `locales` | `string \| string[]` | **Обязательно.** Локали, используемые для форматирования | | `baseDate?` | `Date` | Базовая дата для сравнения. По умолчанию — `new Date()` | | `numeric?` | `'always' \| 'auto'` | Нужно ли всегда использовать числовой формат вывода. По умолчанию — `'auto'` | | `style?` | `'long' \| 'short' \| 'narrow'` | Длина вывода. По умолчанию — `'long'` | | `localeMatcher?` | `'best fit' \| 'lookup'` | Используемый алгоритм сопоставления локалей | ### Возвращает `string` — строка относительного времени в нужном формате (например, "2 часа назад", "через 3 дня"). *** ## Пример ### Базовое использование ```typescript copy 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 copy import { formatRelativeTimeFromDate } from 'generaltranslation'; 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 ``` *** ## Примечания * Автоматически выбирает наиболее подходящую единицу на основе разницы между `date` и `baseDate` * По умолчанию использует `numeric: 'auto'` и `style: 'long'` * Если `baseDate` не указан, по умолчанию используется `new Date()` — учтите, что это может вызвать несоответствия при гидратации в приложениях с серверным рендерингом * В основе использует [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) ## Следующие шаги * См. [`formatRelativeTime`](/docs/core/functions/formatting/format-relative-time) для явного форматирования значения и единицы измерения * См. [`formatDateTime`](/docs/core/functions/formatting/format-date-time) для автономного форматирования даты/времени * См. метод класса GT [`formatRelativeTimeFromDate`](/docs/core/class/methods/formatting/format-relative-time-from-date) для использования с экземпляром