发布时间: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
文档。