# General Translation Platform: formatRelativeTimeFromDate
URL: https://generaltranslation.com/ru/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time-from-date.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Форматирует строку относительного времени на основе даты относительно текущего времени или другой даты. Справка по API для formatRelativeTimeFromDate.

Форматирует строку относительного времени из `Date`, автоматически выбирая наиболее подходящую единицу времени, в экземпляре [GT](/docs/platform/core/reference/gt-class/constructor). General Translation сравнивает дату с базовой датой (по умолчанию это текущее время) и формирует фразы вроде &quot;2 часа назад&quot; или &quot;через 3 дня&quot;.

## Обзор [#overview]

Вызовите `formatRelativeTimeFromDate` для экземпляра [`GT`](/docs/platform/core/reference/gt-class/constructor), передав целевую `Date` и необязательный объект параметров. Метод вернёт отформатированную строку, автоматически выбрав единицу времени, которая лучше всего соответствует разнице во времени.

```typescript
const gt = new GT();
const pastDate = new Date(Date.now() - 7200000); // 2 часа назад

const formatted = gt.formatRelativeTimeFromDate(pastDate, {
  locales: 'en-US',
});
// "2 часа назад"
```

Сигнатура:

```typescript
formatRelativeTimeFromDate(
  date: Date,
  options?: {
    locales?: string | string[];
    baseDate?: Date;
  } & Omit<Intl.RelativeTimeFormatOptions, 'locales'>
): string
```

*Примечание: `formatRelativeTimeFromDate` выполняется локально с помощью `Intl.RelativeTimeFormat` и не требует API-ключа. По умолчанию используется целевая локаль экземпляра, затем выполняется откат к исходной локали и `en`. Чтобы форматировать без экземпляра `GT`, см. отдельную функцию [`formatRelativeTimeFromDate`](/docs/platform/core/reference/utility-functions/formatting/format-relative-time-from-date).*

## Как это работает [#how-it-works]

* **Автоматический выбор единицы времени.** Метод вычисляет разницу между `date` и `baseDate` и выбирает наиболее подходящую единицу времени (секунды, минуты, часы, дни и т. д.).
* **Базовая дата.** Сравнение выполняется относительно `baseDate`, которое по умолчанию равно `new Date()` (текущему времени).
* **Разрешение локалей.** Если `locales` не указано, метод использует целевую локаль экземпляра, затем исходную локаль и `en`.
* **Значения по умолчанию.** Для `numeric` по умолчанию используется `'auto'`, а для `style` — `'long'`.

## Параметры [#parameters]

| Параметр              | Описание                                         | Тип      | Необязательный | По умолчанию |
| --------------------- | ------------------------------------------------ | -------- | -------------- | ------------ |
| [`date`](#date)       | Дата для форматирования относительно `baseDate`. | `Date`   | Нет            | —            |
| [`options`](#options) | Параметры форматирования.                        | `object` | Да             | —            |

### `date` [#date]

**Тип** `Date` · **Обязательно**

Дата, которую нужно форматировать относительно `baseDate`.

### `options` [#options]

**Тип** `{ locales?: string | string[]; baseDate?: Date } & Omit<Intl.RelativeTimeFormatOptions, 'locales'>` · **Необязательно**

Параметры форматирования. В таблице перечислены `baseDate`, `locales` и распространённые параметры, доступные в экспортируемых типах Ядра, а также их фактические значения по умолчанию в Ядре. (Дополнительные сведения о стандарте и особенностях среды выполнения см. в [параметрах конструктора `Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#options)).

| Имя             | Описание                                     | Тип                             | Необязательно | По умолчанию                           |
| --------------- | -------------------------------------------- | ------------------------------- | ------------- | -------------------------------------- |
| `locales`       | Локали для форматирования.                   | `string \| string[]`            | Да            | `targetLocale` → `sourceLocale` → `en` |
| `baseDate`      | Базовая дата для сравнения.                  | `Date`                          | Да            | `new Date()`                           |
| `numeric`       | Использовать ли всегда числовой формат.      | `'always' \| 'auto'`            | Да            | `'auto'`                               |
| `style`         | Длина результата.                            | `'long' \| 'short' \| 'narrow'` | Да            | `'long'`                               |
| `localeMatcher` | Используемый алгоритм сопоставления локалей. | `'best fit' \| 'lookup'`        | Да            | `'best fit'`                           |

`baseDate` — поле, доступное только в Ядре; оно не передаётся в `Intl.RelativeTimeFormat`. Ядро также изменяет исходное значение по умолчанию `numeric` с `'always'` на `'auto'`.

## Возвращает [#returns]

**Тип** `string`

Отформатированная строка относительного времени, например: &quot;2 часа назад&quot; или &quot;через 3 дня&quot;.

## Примеры [#examples]

```typescript
import { GT } from 'generaltranslation';

const gt = new GT();

const now = new Date();

// Автоматически выбирает "hours"
const twoHoursAgo = new Date(now.getTime() - 7200000);
gt.formatRelativeTimeFromDate(twoHoursAgo, { locales: 'en-US', baseDate: now });
// Возвращает: "2 hours ago"

// Автоматически выбирает "days"
const threeDaysLater = new Date(now.getTime() + 259200000);
gt.formatRelativeTimeFromDate(threeDaysLater, { locales: 'fr-FR', baseDate: now });
// Возвращает: "dans 3 jours"
```

## Заметки [#notes]

* Автоматически выбирает наиболее подходящую единицу времени в зависимости от разницы во времени.
* По умолчанию используются `numeric: 'auto'` и `style: 'long'`.
* Если `baseDate` не указана, используется `new Date()`.
* Для явного форматирования значения и единицы времени используйте [`formatRelativeTime`](/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time).

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
