# General Translation Platform: formatRelativeTimeFromDate
URL: https://generaltranslation.com/ja/docs/platform/core/reference/utility-functions/formatting/format-relative-time-from-date.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: GT インスタンスなしで、日付から相対時間をフォーマットします。formatRelativeTimeFromDate の API リファレンス。

[`formatRelativeTimeFromDate`](/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time-from-date) は、General Translation の Core ライブラリに含まれるスタンドアロンのユーティリティ関数で、`Date` から相対時間の文字列をフォーマットし、最も適切な単位 (秒、分、時間、日、週、月、または年) を自動的に選択します。

## 概要 [#overview]

`generaltranslation` から `formatRelativeTimeFromDate` を直接インポートし、`Date` とオプションオブジェクトを指定して呼び出します。これには API Key も [GT](/docs/platform/core/reference/gt-class/constructor) インスタンスも必要ありません。インスタンスのロケールを引き継いで書式設定する場合は、代わりに [`GT`](/docs/platform/core/reference/gt-class/constructor) インスタンスの [`formatRelativeTimeFromDate`](/docs/platform/core/reference/gt-class-methods/formatting/format-relative-time-from-date) メソッドを使用してください。値と単位を明示的に指定して自分で書式設定する場合は、[`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<Intl.RelativeTimeFormatOptions, 'locales'>
    & { 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]

| パラメーター                | 説明                                           | 型                                                                                                          | 任意  | デフォルト |
| --------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | --- | ----- |
| [`date`](#date)       | `baseDate` を基準日として相対的にフォーマットする日付。            | `Date`                                                                                                     | いいえ | —     |
| [`options`](#options) | target ロケール と比較用の基準日を含む Formatting の設定。 | `{ locales?: string \| string[] } & Omit<Intl.RelativeTimeFormatOptions, 'locales'> & { baseDate?: Date }` | はい  | `{}`  |

### `date` [#date]

**型** `Date` · **必須**

`baseDate` を基準に相対形式で書式化する `Date`。

### `options` [#options]

**型** `{ locales?: string | string[] } & Omit<Intl.RelativeTimeFormatOptions, 'locales'> & { baseDate?: Date }` · **任意** · **デフォルト** `{}`

フォーマットの構成。表には、公開されているCore型で公開される`baseDate`、`locales`、および一般的なオプションと、それらに対する実際のCoreデフォルトを示します (補足的な標準およびランタイム固有の詳細については、[`Intl.RelativeTimeFormat`のコンストラクターオプション](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat#options)を参照してください) 。

| Property        | 説明                | 型                            | 任意 | デフォルト      |
| --------------- | ----------------- | ------------------------------- | -- | ------------ |
| `locales`       | フォーマットに使用するロケール。  | `string \| string[]`            | はい | `en`         |
| `baseDate`      | 比較の基準となる基準日。      | `Date`                          | はい | `new Date()` |
| `numeric`       | 常に数値形式で出力するかどうか。  | `'always' \| 'auto'`            | はい | `'auto'`     |
| `style`         | 出力の長さ。            | `'long' \| 'short' \| 'narrow'` | はい | `'long'`     |
| `localeMatcher` | 使用するロケール照合アルゴリズム。 | `'best fit' \| 'lookup'`        | はい | `'best fit'` |

`baseDate`はCore専用のフィールドであり、`Intl.RelativeTimeFormat`には渡されません。Coreはまた、上流の`numeric`のデフォルトを`'always'`から`'auto'`に変更します。

## 戻り値 [#returns]

**型** `string`

フォーマットされた相対時間の文字列 (例: &quot;2時間前&quot;、&quot;3日後&quot;) 。

## 例 [#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()` が使われます。これは server-rendered アプリで ハイドレーションの不一致 を引き起こす可能性があるため、注意してください。
* 内部的には [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) を使用しています。

## Sitemap

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