Intl.RelativeTimeFormat() コンストラクター
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年9月以降、すべてのブラウザーで利用可能です。
Intl.RelativeTimeFormat() コンストラクターは、 Intl.RelativeTimeFormat オブジェクトを生成します。
構文
new Intl.RelativeTimeFormat()
new Intl.RelativeTimeFormat(locales)
new Intl.RelativeTimeFormat(locales, options)
引数
locales省略可-
BCP 47 言語タグまたは
Intl.Localeインスタンスを持つ文字列、あるいはそのようなロケール識別子の配列。undefinedが渡された場合、または指定されたロケール識別子のいずれも対応していない場合は、ランタイムのデフォルトのロケールが使用されます。locales引数の一般的な形と解釈については、Intlメインページの引数の説明を参照してください。次の Unicode 拡張キーが許可されています。
nu-
numberingSystemを参照してください。
このキーは、以下に掲載されている
optionsにも対応しています。両方が設定されている場合、optionsプロパティが優先されます。 options省略可-
以下のプロパティを含むオブジェクト(取得される順に記載しています。すべてオプションです)。
localeMatcher
-
使用するロケール照合アルゴリズムです。使用可能な値は
"lookup"および"best fit"です。既定値は"best fit"です。このオプションについての情報は、ロケールの識別とネゴシエーションを参照してください。numberingSystem-
数値の書式化に使用する記数法。たとえば、
"arab"、"hans"、"mathsans"などが使用されます。対応している記数法の種類の一覧については、Intl.supportedValuesOf()を参照してください。このオプションは、Unicode 拡張キーnuを使用して設定することもできます。両方が指定されている場合、このoptionsプロパティが優先されます。 style-
国際化されたメッセージの長さです。使用可能な値は次の通りです。
"long"(デフォルト値)-
例えば "'1 か月前"
"short"-
例えば "1 か月前"
"narrow"-
例えば "1か月前"。一部のロケールでは、narrow スタイルは short スタイルと同様になることがあります。
numeric-
出力に数値を使用するかどうかを指定します。指定可能な値は
"always"と"auto"です。デフォルトは"always"です。"auto"に設定すると、出力では1 日前ではなく昨日といった、より自然な表現が使用される場合があります。
例外
RangeError-
localesまたはoptionsに不正な値が含まれている場合に発生します。
例
>基本的な書式の使い方
以下の例は、英語を使用した相対時間のフォーマッターの生成方法を示しています。
// 現在のロケールで、デフォルト値を明示的に指定した
// 相対時刻フォーマッターを作成
const rtf = new Intl.RelativeTimeFormat("ja", {
numeric: "always", // 他の値: "auto"
style: "long", // 他の値: "short" または "narrow"
});
// 負の値 (-1) を使った相対時間の書式
rtf.format(-1, "day"); // "1 日後"
// 正の値 (1) を使った相対時間の書式
rtf.format(1, "day"); // "1 日前"
auto オプションの使用
numeric: "auto" オプションが渡された場合は、 yesterday や tomorrow の文字列が 1 day ago や in 1 day の代わりに生成されます。これにより、出力に数値が含まれなくなることがあります。
// 現在のロケールで、 numeric: "auto" オプション値を渡して
// 相対時刻フォーマッターを作成
const rtf = new Intl.RelativeTimeFormat("ja", { numeric: "auto" });
// 負の値 (-1) を使った相対時間の書式
rtf.format(-1, "day"); // "昨日"
// 正の値 (1) を使った相対時間の書式
rtf.format(1, "day"); // "明日"
値が 0 の場合、出力は単位によって異なることがあります。「0 秒」は、その地域の言語に合わせた「今」という表現で表します。
rtf.format(0, "second"); // "今"
rtf.format(0, "day"); // "今日"
rtf.format(0, "minute"); // "1 分以内"
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Internationalization API Specification> # sec-intl-relativetimeformat-constructor> |
ブラウザーの互換性
関連情報
Intl.RelativeTimeFormatIntlIntl.RelativeTimeFormat- v8.dev (2018)