一、作用
- 将各种格式数据转化为字符串。
- 需要重点记住的是,
toLocaleString是基于本地环境去处理返回一个字符串,因此为了你的代码更加可靠,你需要在每次调用中都指定语言环境以及特殊的options。例如:在类似格式化时间这种场景下,不推荐使用date.toLocaleString()这种写法,而是应该这样写date.toLocaleString('zh', { hour12: false })。
let date = new Date()
console.log(date.toLocaleString())
// → 2023/12/19 17:51:40
// 需注意,此结果是基于本地环境,在不同计算机上返回结果不同,有些是十二小时制格式
let num = 12345678
console.log(num.toLocaleString())
// → 12,345,678
let arr = ['a', 'b', 'c']
console.log(arr.toLocaleString())
// → a,b,c
let str = '123'
console.log(str.toLocaleString())
// → 123
二、参数
toLocaleString(locales, options)
locales 和 options 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。
locales(可选)
缩写语言代码(BCP 47 language tag)的字符串或者这些字符串组成的数组。用于指定格式化对象时使用的语言环境,默认为当前环境的语言。
const num = 123456.789;
// 中文
console.log(num.toLocaleString("zh"))
// → 123,456.789
// 英语
console.log(num.toLocaleString("en"))
// → 123,456.789
// nu 扩展字段要求编号系统,e.g. 中文十进制
console.log(num.toLocaleString("zh-Hans-CN-u-nu-hanidec"))
// → 一二三,四五六.七八九
// 不同语言对时间对象的处理结果不同
const date = new Date();
console.log(date.toLocaleString('zh'))
// → 2023/12/19 17:14:46
console.log(date.toLocaleString('en'))
// → 12/19/2023, 5:14:46 PM
console.log(date.toLocaleString('ja'))
// → 2023/12/19 17:14:46
options(可选)
调整输出格式的配置项。
- 格式化时间对象
const time = new Date()
console.log(time.toLocaleString('zh'))
// → 2023/12/19 17:25:27
console.log(time.toLocaleString('zh', { hour12: true }))
// → 2023/12/19 下午5:25:27
console.log(time.toLocaleString('zh', { hour12: false }))
// → 2023/12/19 17:25:27
console.log(time.toLocaleString("zh", { month: "short" }))
// → 12月
console.log(time.toLocaleString("zh", { month: "long" }))
// → 十二月
console.log(time.toLocaleString("zh", { month: "narrow" }))
// → 12
console.log(time.toLocaleString("zh", { month: "numeric" }))
// → 12月
console.log(time.toLocaleString("zh", { month: "2-digit" }))
// → 12月
- 格式化数字(添加货币符号、转百分比、添加单位等)
// ************** 1.直接调用 **************
const num = 12345678
console.log(num.toLocaleString())
// → 12,345,678
// ************** 2.添加不同国家货币符号 **************
console.log(num.toLocaleString('zh', { style: 'currency', currency: 'CNY' }))
// → ¥12,345,678.00
console.log(num.toLocaleString('zh', { style: 'currency', currency: 'EUR' }))
// → €12,345,678.00
console.log(num.toLocaleString('zh', { style: 'currency', currency: 'USD' }))
// → US$12,345,678.00
// 国际标准货币代码
console.log(num.toLocaleString('zh', { style: 'currency', currency: 'CNY', currencyDisplay:'code' }))
// → CNY 12,345,678.00
// 本地化的货币名称
console.log(num.toLocaleString('zh', { style: 'currency', currency: 'CNY', currencyDisplay:'name' }))
// → 12,345,678.00人民币
// 不展示小数
console.log(num.toLocaleString("zh", { style: "currency", currency: "CNY", minimumFractionDigits: 0 }))
// → ¥12,345,678
// 取近似值
console.log(num.toLocaleString("zh", { style: "currency", currency: "CNY", notation: "compact" }))
// → ¥1235万
// ************** 3.科学计数法 **************
console.log(num.toLocaleString("zh", { notation: "scientific" }))
// → 1.235E7
// ************** 4.保留 1-3 位小数 **************
console.log(num.toLocaleString('zh', { minimumFractionDigits: 1, maximumFractionDigits: 3 }))
// → 12,345,678.0
// ************** 5.转百分比 **************
console.log(num.toLocaleString('zh', { style:'percent' }))
// → 1,234,567,800%
const num1 = 0.5500
console.log(num1.toLocaleString('zh', { style:'percent' }))
// → 55%
// ************** 6.添加单位 **************
console.log(num.toLocaleString('zh', { style:'unit', unit: 'day' }))
// → 12,345,678天
console.log(num.toLocaleString('zh', { style:'unit', unit: 'kilobyte-per-second' }))
// → 12,345,678 kB/秒
console.log(num.toLocaleString('zh', { style:'unit', unit: 'megabyte' }))
// → 12,345,678 MB