https://blog.csdn.net/weixin_39749820/article/details/82869537
object.toLocaleString([locales [, options]]);
首先介绍 toLoacleString
在数字类型上的使用(非常之nb)
const num = 2333333;
num.toLocaleString(); // 2,333,333
toLocaleString
在数字类型上的一些 options 参数(仅仅是一些常用的属性,具体的属性请查阅 MDN 文档)
style
属性 – 表示格式化时使用的样式(默认值是 decimal
也就是纯数字,也可以是 percent
百分比以及 currency
货币),举个栗子
const num = 2333333;
num.toLocaleString(‘zh‘,{style:‘decimal‘}); //2,333,333
num.toLocaleString(‘zh‘,{style:‘percent‘}); // 233,333,300%
num.toLocaleString(‘zh‘,{style:‘currency‘}); // 报错
style
设为 currency
时才有用的,它们分别是 currency
与 currencyDisplay
,前者制定对应的货币,比如 USD
、EUR
与 CNY
(也是不区分大小写的);后者则是货币符号的展示样式,默认值是 symbol
,即对应的符号,如 CNY
是 ¥ ,该属性也可以设置为 code
与 name
,不过用的比较少,还是上栗子吧
const num = 2333333
num.toLocaleString(‘zh‘,{style:‘currency‘ , currency:‘CNY‘ }); //¥2,333,333.00
num.toLocaleString(‘zh‘, { style: ‘currency‘, currency: ‘cny‘, currencyDisplay: ‘code‘ }); // CNY2,333,333.00
num.toLocaleString(‘zh‘, { style: ‘currency‘, currency: ‘cny‘, currencyDisplay: ‘name‘ }); //2,333,333.00人民币
minimumIntegerDigits
、minimumIntegerDigits
与 maximumFractionDigits
,分别用于指定整数最少位数、小数最少与最多位数,不够用 0 补全,继续看栗子
let num = 2333.3;
num.toLocaleString(‘zh‘, { minimumIntegerDigits: 5 }); //02,333.3//如果不想有分隔符,可以指定useGrouping为false
num.toLocaleString(‘zh‘, { minimumIntegerDigits: 5, useGrouping: false }); //02333.3
num.toLocaleString(‘zh‘, { minimumFractionDigits: 2, useGrouping: false }); //2333.30
num = 666.666
num.toLocaleString(‘zh‘, { maximumFractionDigits: 2, useGrouping: false }); //666.67
minimumSignificantDigits
与 maximumSignificantDigits
,用于控制有效数字的位数,只要设置了这一组,第三的那一组属性则全部忽略不算,还是栗子
const num = 1234.5;
num.toLocaleString(‘zh‘, { minimumSignificantDigits: 6, useGrouping: false }); //1234.50
num.toLocaleString(‘zh‘, { maximumSignificantDigits: 4, useGrouping: false }); //1235
maximumFractionDigits
与 maximumSignificantDigits
均是四舍五入,使用时请注意。toLocaleString
在日期类型上面的应用,与数字类型不同的是,日期类型的 locales
对输出的影响十分之大,因此我们应该根据实际情况选择合适的语言类型,此处也是只介绍常用的属性,详细的属性还是请大家查阅 MDN 文档
hour12
表示的是使用十二小时制还是使用二十四小时制,默认值是十二小时制。看栗子
const date = new Date();
date.toLocaleString(‘zh‘, { hour12: true }); //2018/4/4 下午6:57:36
date.toLocaleString(‘zh‘, { hour12: false }); //2018/4/4 18:57:36
weekday
、era
、year
、month
、day
、hour
、minute
、second
与 timeZoneName
我们一个一个的来撸
weekday
与 era
(即‘公元’),它俩均可以取值为 narrow
、short
以及 long
,简单说就是能有多短就有多短、缩写以及正常写法,还是撸代码吧:
const date = new Date();
date.toLocaleString(‘en‘, { weekday: ‘narrow‘, era: ‘narrow‘ }); //W A
date.toLocaleString(‘en‘, { weekday: ‘short‘, era: ‘short‘ }); //Wed AD
date.toLocaleString(‘en‘, { weekday: ‘long‘, era: ‘long‘ }); //Wednesday Anno Domini
timeZoneName
属性,这个属性只有 short
或 long
两个值,具体中文怎么翻译我也不清楚,不过看了代码应该就知道有何用了:
const date = new Date();
date.toLocaleString(‘zh‘, { timeZoneName: ‘short‘ }); //2018/4/5 GMT+8 下午7:18:26
date.toLocaleString(‘zh‘, { timeZoneName: ‘long‘ }); //2018/4/5 中国标准时间 下午7:18:26、
numeric
与 2-digit
,简单说来就是是否用两位数字表示,看码说话:
const date = new Date();
date.toLocaleString(‘zh‘, { year: ‘numeric‘, month: ‘numeric‘, day: ‘numeric‘, hour: ‘numeric‘, minute: ‘numeric‘, second: ‘numeric‘, }); //2018/4/5 下午7:30:17
date.toLocaleString(‘zh‘, { year: ‘2-digit‘, month: ‘2-digit‘, day: ‘2-digit‘, hour: ‘2-digit‘, minute: ‘2-digit‘, second: ‘2-digit‘ }); //18/04/05 下午7:30:17
month
这个属性,因为语言对于月份来说有不同的展现,因此除去 numeric
与 2-digit
外,它还有额外的三个属性,分别是 narrow
、short
与 long
,具体还是来看代码:
const date = new Date();
date.toLocaleString(‘en‘, { month: ‘narrow‘ }); //A
date.toLocaleString(‘en‘, { month: ‘short‘ }); //Apr
date.toLocaleString(‘en‘, { month: ‘long‘ }); //April
关于 toLocaleString
的介绍就这么多了,可以发现在某些场景下确实可以发挥极大地作用,不再需要正则了,虽然个人感觉这个 API 比较冷门,但还是比较好用的
原文:https://www.cnblogs.com/crabzzz/p/12461161.html