ZetCode

JavaScript toLocaleString 方法

最后修改于 2025 年 4 月 4 日

在本文中,我们将展示如何使用 JavaScript 中的 toLocaleString 方法格式化数字和日期。

JavaScript 中的本地化

toLocaleString 方法使用特定于区域设置的约定将数字或日期转换为字符串。它提供了一种根据用户的语言和区域设置格式化数据的方式。

此方法在 JavaScript 中的 Number、Date 和 Array 对象上可用。格式化规则根据主机的当前区域设置或在 options 参数中指定的区域设置而有所不同。

对于数字,它处理小数点分隔符、数字分组和货币格式。对于日期,它根据日期和时间的表示方式的本地约定进行格式化。此方法对于国际化应用程序至关重要。

基本数字格式化

以下示例演示了使用 toLocaleString 进行基本数字格式化。

main.js
const number = 123456.789;

console.log(number.toLocaleString()); // Default locale
console.log(number.toLocaleString('de-DE')); // German format
console.log(number.toLocaleString('ar-EG')); // Arabic format

我们使用不同的区域设置格式化相同的数字。该方法会根据区域设置约定自动调整小数点、分组分隔符和数字表示形式。

$ node main.js
"123,456.789" (en-US)
"123.456,789" (de-DE)
"١٢٣٬٤٥٦٫٧٨٩" (ar-EG)

货币格式化

toLocaleString 方法可以将数字格式化为货币值。

main.js
const price = 1234.56;

console.log(price.toLocaleString('en-US', {
    style: 'currency',
    currency: 'USD'
}));

console.log(price.toLocaleString('ja-JP', {
    style: 'currency',
    currency: 'JPY'
}));

我们为不同的区域设置将数字格式化为货币值。 style 选项指定货币格式,而 currency 选项定义要使用的货币。

$ node main.js
"$1,234.56" (en-US)
"¥1,235" (ja-JP)

日期格式化

toLocaleString 方法可以根据区域设置约定格式化 Date 对象。

main.js
const date = new Date();

console.log(date.toLocaleString()); // Default locale
console.log(date.toLocaleString('en-GB')); // British format
console.log(date.toLocaleString('ko-KR')); // Korean format

我们使用不同的区域设置格式化当前日期和时间。该方法根据区域约定调整日期顺序、分隔符和时间格式。

$ node main.js
"4/4/2025, 3:14:07 PM" (en-US)
"04/04/2025, 15:14:07" (en-GB)
"2025. 4. 4. 오후 3:14:07" (ko-KR)

自定义日期格式化

我们可以使用 toLocaleString 和 options 自定义日期格式化。

main.js
const date = new Date();

const options = {
    weekday: 'long',
    year: 'numeric',
    month: 'long',
    day: 'numeric'
};

console.log(date.toLocaleString('de-DE', options));
console.log(date.toLocaleString('fr-FR', options));

我们指定格式化选项来控制日期的显示方式。 options 对象允许我们选择要包含哪些组件及其格式样式。

$ node main.js
"Freitag, 4. April 2025" (de-DE)
"vendredi 4 avril 2025" (fr-FR)

数组本地化

toLocaleString 方法也可以在数组上调用以格式化所有元素。

main.js
const mixedArray = [12345.67, new Date(), 'plain string'];

console.log(mixedArray.toLocaleString('en-US'));
console.log(mixedArray.toLocaleString('es-ES'));

在数组上调用时,toLocaleString 会在每个元素上调用该方法。数字和日期将根据区域设置进行格式化,而字符串将保持不变。

$ node main.js
"12,345.67,4/4/2025, 3:14:07 PM,plain string" (en-US)
"12.345,67,4/4/2025 15:14:07,plain string" (es-ES)

来源

Number toLocaleString - 语言参考

在本文中,我们演示了如何使用 toLocaleString() 方法根据区域设置约定格式化 JavaScript 中的数字和日期。

作者

我叫 Jan Bodnar,是一位对编程充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出 所有 JS 数组函数。