js實現日期格式化封裝-八種格式
- 2021 年 11 月 2 日
- 筆記
封裝一個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 }