js實現日期格式化封裝-八種格式
阿新 • • 發佈:2021-11-02
封裝一個momentTime.js檔案,包含8種格式.
需要傳兩個引數:
- 時間戳:stamp
- 格式化的型別:type,
日期補零的方法用到es6語法中的padStart(length,‘字元’):
- 第一個引數是指定生成的字串的最小長度,
- 第二個引數是用來補全的字串。
- 如果沒有指定第二個引數,預設用空格填充。
需要注意的是需要將獲取到的年月日轉為字串,可以直接拼接一個引號。
padStart()方法,padEnd()方法
ES2017 引入了字串補全長度的功能。如果某個字串不夠指定長度,會在頭部或尾部補全。padStart()用於頭部補全,padEnd()用於尾部補全。
ios相容問題
使用 new Date(date).getTime() 轉化成時間戳(格式:YYYY-mm-dd HH:MM:SS)
- 在android系統上可以正常獲取到, 但是再ios系統上得到確是NaN。
- ios不兼職 yyyy-MM-dd HH:mm:ss 這種時間格式
- 解決:需要把-替換成 /,如 yyyy/MM/dd HH:mm:ss這種格式。
解決:new Date(date.replace(/-/g,’/’)).getTime();
function getTimeObj(time) { let newdata = new Date(time) let y = newdata.getFullYear() let m = newdata.getMonth() + 1 let d = newdata.getDate() let hh = newdata.getHours() let mm = newdata.getMinutes() let ss = newdata.getSeconds() return { y, m, d, hh, mm, ss } }
/* type:0 =>2021-09-12 預設 type:1 =>2021-09-12 10:34:12 type:2 =>09-12 10:34:12 type:3 =>09-12 type:4 =>2021/09/12 type:5 =>2021/09/12 10:34:12 type:6 =>09/12 10:34:12 type:7 =>09/12 */ function filterTime(stamp, type = 0) { let str = stamp if (stamp && stamp.indexOf('-') > 0) { str = new Date(stamp.replace(/-/g, '/')).getTime() } let date = new Date(str) let y = date.getFullYear(); let m = (date.getMonth() + 1 + '').padStart(2, '0'); let d = (date.getDate() + '').padStart(2, '0'); let hh = (date.getHours() + '').padStart(2, '0') let mm = (date.getMinutes() + '').padStart(2, '0') let ss = (date.getSeconds() + '').padStart(2, '0') let time; switch (type) { case 0: time = `${y}-${m}-${d}`; break; case 1: time = `${y}-${m}-${d} ${hh}:${mm}:${ss}`; break; case 2: time = `${m}-${d} ${hh}:${mm}:${ss}`; break; case 3: time = `${m}-${d}`; break; case 4: time = `${y}/${m}/${d}`; break; case 5: time = `${y}/${m}/${d} ${hh}:${mm}:${ss}`; break; case 6: time = `${m}/${d} ${hh}:${mm}:${ss}`; break; case 7: time = `${m}/${d}`; break; } return time; } module.exports = { getTimeObj, filterTime }