Intl.RelativeTimeFormat
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年9月.
Intl.RelativeTimeFormat オブジェクトは言語独自の相対時間の書式化をできるようにします。
試してみましょう
const rtf1 = new Intl.RelativeTimeFormat("en", { style: "short" });
console.log(rtf1.format(3, "quarter"));
// 予想される結果: "in 3 qtrs."
console.log(rtf1.format(-1, "day"));
// 予想される結果: "1 day ago"
const rtf2 = new Intl.RelativeTimeFormat("es", { numeric: "auto" });
console.log(rtf2.format(2, "day"));
// 予想される結果: "pasado mañana"
コンストラクター
Intl.RelativeTimeFormat()-
新しい
Intl.RelativeTimeFormatオブジェクトを生成します。
静的メソッド
Intl.RelativeTimeFormat.supportedLocalesOf()-
指定されたロケールのうち、実行時の既定のロケールに代替されずに対応するものを配列に収めて返します。
インスタンスプロパティ
これらのプロパティは Intl.RelativeTimeFormat.prototype で定義されており、すべての Intl.RelativeTimeFormat インスタンスで共有されます。
Intl.RelativeTimeFormat.prototype.constructor-
このインスタンスオブジェクトを作成したコンストラクター関数。
Intl.RelativeTimeFormatインスタンスの場合、初期値はIntl.RelativeTimeFormatコンストラクターです。 Intl.RelativeTimeFormat.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]プロパティの初期値で、文字列"Intl.RelativeTimeFormat"です。このプロパティはObject.prototype.toString()で使用されます。
インスタンスメソッド
Intl.RelativeTimeFormat.prototype.format()-
valueおよびunitを、指定されたIntl.RelativeTimeFormatオブジェクトのロケールと書式化オプションに従って書式化します。 Intl.RelativeTimeFormat.prototype.formatToParts()-
ロケール固有のカスタム形式に使用可能な相対時間の形式を部分的に表現したオブジェクトの
Arrayを返します。 Intl.RelativeTimeFormat.prototype.resolvedOptions()-
オブジェクトの初期化中に計算されたロケールや形式のオプションを反映したプロパティを持つ新しいオブジェクトを返します。
例
>基本的な format の使用例
次の例は、英語の相対時間フォーマッターの使用方法を示しています。
// 明示的に渡された既定値を使って
// ロケールの相対時間を生成します
const rtf = new Intl.RelativeTimeFormat("en", {
localeMatcher: "best fit", // other values: "lookup"
numeric: "always", // other values: "auto"
style: "long", // other values: "short" or "narrow"
});
// 負数の値 (-1) を使った相対時間の形式
rtf.format(-1, "day"); // "1 day ago"
// 正数の値 (1) を使った相対時間の形式
rtf.format(1, "day"); // "in 1 day"
formatToParts の使用例
以下は形式された部品を返す相対時間フォーマッターの生成方法の例です。
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
// 日単位の相対時間形式
rtf.formatToParts(-1, "day");
// [{ type: "literal", value: "yesterday"}]
rtf.formatToParts(100, "day");
// [
// { type: "literal", value: "in " },
// { type: "integer", value: "100", unit: "day" },
// { type: "literal", value: " days" }
// ]
仕様書
| Specification |
|---|
| ECMAScript® 2027 Internationalization API Specification> # relativetimeformat-objects> |
ブラウザーの互換性
関連情報
Intl.RelativeTimeFormatのポリフィル (FormatJS)IntlIntl.RelativeTimeFormat- v8.dev (2018)