Intl.RelativeTimeFormat.prototype.format()

Baseline 已廣泛支援

此功能已成熟,並可在許多裝置和瀏覽器版本上使用。自 2020 年 9 月起,所有瀏覽器均已提供此功能。

format() 方法是 Intl.RelativeTimeFormat 例項的方法,它根據此 Intl.RelativeTimeFormat 物件的地區和格式化選項來格式化 valueunit

試一試

const rtf = new Intl.RelativeTimeFormat("en", { style: "short" });

console.log(rtf.format(3, "quarter"));
// Expected output: "in 3 qtrs."

console.log(rtf.format(-1, "day"));
// Expected output: "1 day ago"

console.log(rtf.format(10, "seconds"));
// Expected output: "in 10 sec."

語法

js
format(value, unit)

引數

value

用於國際化相對時間訊息的數值。

unit

用於相對時間國際化訊息的單位。可能的值為:"year""quarter""month""week""day""hour""minute""second"。也允許使用複數形式。

返回值

一個字串,表示給定 valueunit 根據此 Intl.RelativeTimeFormat 物件的地區和格式化選項格式化後的結果。

注意: 大多數情況下,format() 返回的格式是一致的。然而,輸出可能因實現而異,即使在同一區域設定下也是如此 — 輸出差異是故意的,並且規範允許。它也可能不是您期望的。例如,字串可能使用不間斷空格,或者被雙向控制字元包圍。您不應將 format() 的結果與硬編碼的常量進行比較。

示例

基本格式用法

以下示例顯示瞭如何使用英語建立相對時間格式化器。

js
// Create a relative time formatter in your locale
// with default values explicitly passed in.
const rtf = new Intl.RelativeTimeFormat("en", {
  localeMatcher: "best fit", // other values: "lookup"
  numeric: "always", // other values: "auto"
  style: "long", // other values: "short" or "narrow"
});

// Format relative time using negative value (-1).
rtf.format(-1, "day"); // "1 day ago"

// Format relative time using positive value (1).
rtf.format(1, "day"); // "in 1 day"

使用 auto 選項

如果傳入了 numeric:auto 選項,它將生成字串 yesterdaytodaytomorrow,而不是 1 day agoin 0 daysin 1 day。這使得輸出不總是需要使用數值。

js
// Create a relative time formatter in your locale
// with numeric: "auto" option value passed in.
const rtf = new Intl.RelativeTimeFormat("en", { numeric: "auto" });

// Format relative time using negative value (-1).
rtf.format(-1, "day"); // "yesterday"

rtf.format(0, "day"); // "today"

// Format relative time using positive day unit (1).
rtf.format(1, "day"); // "tomorrow"

規範

規範
ECMAScript® 2026 國際化 API 規範
# sec-Intl.RelativeTimeFormat.prototype.format

瀏覽器相容性

另見