toLocaleString介绍
toLocaleString
用于将对象根据语言的不同转换成某种语言环境下的字符串,同时也可以根据传入的参数来判断具体的表现形式。本文主要介绍Number和Date类型的toLocaleString方法
Number.prototype.toLocaleString
首先谈一个面试中经常会被问道的问题:如何对数字进行千位符格式化?一般人可能想到的做法是换成字符数组循环手动插入,
或者使用正则的方法。其实知道了toLocaleString完全可以不需要这么做,一行代码就能搞定。
1 | const num = 1122333444455551 |
Number.prototype.toLocaleString
支持两个参数。一个是语言代码,表示将数字格式化成哪国语言;另一个是格式化时的可选的一些属性,包括localeMatcher
、style
、currency
、currencyDisplay
、useGrouping
、minimumIntegerDigits
、minimumFractionDigits
、maximumFractionDigits
、minimumSignificantDigits
、maximumSignificantDigits
等。例如:
1 | const num = 1276482; |
上面提到的比较长的属性用来控制整数、小数位数和有效数字位数,可以分为两组。第一组是minimumIntegerDigits
、minimumFractionDigits
、maximumFractionDigits
,应用场景是自动补0。
1 | const num = 1413.56; |
另一组是minimumSignificantDigits
和maximumSignificantDigits
,用来控制有效数字位数,只要设置了这一组属性,第一组的属性就会被忽略。
1 | const num = 141.56; |
兼容型
可惜的是,好用的API兼容性往往都不是很好。如果想使用参数的化,项目需要支持到IE11
MDN地址:toLocaleString
Date.prototype.toLocaleString
Date类型的语言代码一般用的不多,保持默认或者使用zh
即可,格式化时的常用的属性主要有weekday
、year
、month
、day
、hour
、minute
。
weekday
表示星期几(中文形式没有),可选属性有narrow
、short
、long
,用来控制缩写的形式
1 | const date = new Date(); |
timeZoneName
表示时区的表现形式,有short
和long
两个值
1 | const date = new Date(); |
剩下的属性可以取值为numeric
和2-digit
来控制位数展示。不过好像对于小时、分钟、秒不起作用
1 | const date = new Date(Date.UTC(2012, 1, 2, 3, 1, 1)); // 2012/2/2 11:01:01 |
兼容性
和上面差不多,如图:
MDN地址:toLocaleString
原文链接
本文参考自sea_ljf的文章想偷懒的话,toLocaleString 了解一下?