Intl.DurationFormat 現已成為新版基準

發布日期:2025 年 3 月 20 日

網頁上常見的資訊包括文字說明,指出某項事件發生前還有多久的時間,或是事件發生後經過多久。這通常會以字串表示,以小時、分鐘、秒或其他實用時間單位表示時間長度。

Intl.DurationFormat 是一項實用功能,可在瀏覽器中為您執行此操作,同時考量您可能需要的任何國際化需求,而無需額外使用 JavaScript。自 2025 年 3 月起,這項功能已成為基準新功能。

Intl.DurationFormat 的運作方式

Intl.DurationFormat 是一個類別,在例項化時會傳回描述時間長度的字串。其運作方式是指定物件,其中包含對應於所需字串產生時間單位的鍵和值:

// Specify the duration:
const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 yr, 20 hr, 15 min, 35 sec'
new Intl.DurationFormat('en').format(duration);

如要以長格式傳回字串,請將 'long' 值傳遞至建構函式的第二個引數中的 style 選項:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 year, 20 hours, 15 minutes, 35 seconds'
new Intl.DurationFormat('en', { style: 'long' }).format(duration);

目前,這些範例會產生英文字串。由於這是國際化功能,因此其真正用途是讓您可以傳入任何有效的語言代碼,並以您需要的任何支援語言格式化字串:

const duration = {
  years: 1,
  hours: 20,
  minutes: 15,
  seconds: 35
};

// Output: '1 Jahr, 20 Stunden, 15 Minuten und 35 Sekunden'
new Intl.DurationFormat('de', { style: 'long' }).format(duration);

// Output: '1 año, 20 horas, 15 minutos y 35 segundos'
new Intl.DurationFormat('es', { style: 'long' }).format(duration);

// Output: '1年20小时15分钟35秒钟'
new Intl.DurationFormat('zh', { style: 'long' }).format(duration);

// Output: '1 år, 20 timer, 15 minutter og 35 sekunder'
new Intl.DurationFormat('no', { style: 'long' }).format(duration);

// Output: 'mwaka 1, saa 20, dakika 15 na sekunde 35'
new Intl.DurationFormat('sw', { style: 'long' }).format(duration);

這些範例只是讓您瞭解這項新功能的用途。如要進一步瞭解其功能,請參閱 MDN 上的 Intl.DurationFormat 說明文件