# General Translation Platform: formatRelativeTimeFromDate URL: https://generaltranslation.com/ja/docs/platform/core/reference/utility-functions/formatting/format-relative-time-from-date.mdx --- title: formatRelativeTimeFromDate 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 & { 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 & { baseDate?: Date }` | はい | `{}` | ### `date` [#date] **型** `Date` · **必須** `baseDate` を基準に相対形式で書式化する `Date`。 ### `options` [#options] **Type** `{ locales?: string | string[] } & Omit & { baseDate?: Date }` · **省略可能** · **デフォルト** `{}` フォーマットの設定: | Property | Description | Type | Optional | Default | | --------------- | ----------------- | ------------------------------- | -------- | ------------ | | `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()` が使われます。これは server-rendered アプリで ハイドレーションの不一致 を引き起こす可能性があるため、注意してください。 * 内部的には [`Intl.RelativeTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat) を使用しています。