背景
最近公司專案出海速度增快,相同的業務模式,前端大部分的業務程式碼都可以複用,其中需要額外處理的有幾個模組:
- 語言包
- 貨幣符號
- 數字顯示格式(包括日期、千分位規則等)
其中對於不同的國家,其數字顯示格式略有不同,比如千分位格式,針對不同國家維護一套正則匹配需要增加開發和後期維護成本,這就引出了今天介紹的toLocaleString()神器
toLocaleString 用法
Number.prototype.toLocaleString()
numObj.toLocaleString([locales [, options]])
- locales 語言引數,用來確定國家和語言;比如es-MX 表示墨西哥的西語、es-AR 表示阿根廷的西語、pt-BR 表示巴西的葡萄牙
- options 一個object,配置具體展示的形式,常用的屬性有: 1.style 展示百分比 or 純數字格式(預設) 2.currency 貨幣符號 3.minimumFractionDigits 最少小數位數 4.maximumFractionDigits 最大小數位數
var num1 = 84629489879879.6223
num1.toLocaleString('pt-BR', { maximumFractionDigits: 2 })
// "84.629.489.879.879,62"
var num2 = 84629489879879.6223
num2.toLocaleString('es-MX', { maximumFractionDigits: 2 })
// "84,629,489,879,879.62"
複製程式碼
Date.prototype.toLocaleString()
1.dateObj.toLocaleString([locales [, options]]) 返回日期+時間的格式化結果,常見配置同上
// US English uses month-day-year order
var date1 = new Date()
date1.toLocaleString('en-US')
// "1/21/2019, 4:18:12 PM"
// British English uses day-month-year order
var date2 = new Date()
date2.toLocaleString('en-GB')
// "21/01/2019, 16:18:47"
// British English uses day-month-year order
var date3 = new Date()
date3.toLocaleString('ko-KR')
// "2019. 1. 21. 오후 4:19:21"
複製程式碼
2.dateObj.toLocaleDateString([locales [, options]]) 只返回date部分的格式化結果
var date1 = new Date()
date1.toLocaleDateString('en-US')
// "1/21/2019"
var date2 = new Date()
date2.toLocaleDateString('en-GB')
// "21/01/2019"
var date3 = new Date()
date3.toLocaleDateString('ko-KR')
// "2019. 1. 21."
複製程式碼
3.dateObj.toLocaleTimeString([locales [, options]]) 只返回time部分的格式化結果
var date1 = new Date()
date1.toLocaleTimeString('en-US')
// "4:28:24 PM"
var date2 = new Date()
date2.toLocaleTimeString('en-GB')
// "16:27:50"
var date3 = new Date()
date3.toLocaleTimeString('ko-KR')
// "오후 4:28:54"
複製程式碼