JS toLocaleString的一些用法

249 阅读3分钟

一、作用

  • 将各种格式数据转化为字符串。
  • 需要重点记住的是,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)

localesoptions 参数让应用程序可以指定要进行格式转换的语言,并且定制函数的行为。

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(可选)

调整输出格式的配置项。

  1. 格式化时间对象
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. 格式化数字(添加货币符号、转百分比、添加单位等)
// ************** 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