用法 :
1.dateTime 格式化进间戳 10位 或 13位, 格式化字符YMD hms 对应 年月日 点分秒
2.dateObject 返回 一个包括YMD hms属性的对象
3.dateDays 根据 传入的 年和月 ,返回 这个月的天数
//格式化时间戳
dateTime(); //2019-01-04 11:34:27
dateTime(1580400000000);//1580400000000 2020/1/31 上午12:00:00
dateTime(1580400000000 ,'Y年M月D日/ h点m分s秒') //2019年01月04日/ 11点36分00秒
//指定月份的天数
dateDays(2020,2); // 29
//日期的年月日 时分秒
dateObject(1580400000000); // { Y:2020, M:1, D:31, h:', m:1, s:2}
const notNumber = v => typeof v !== "number";
const isTimeStamp = s => {
if (isNaN(s)) {
console.error('时间戳必须是Number')
return false
}
switch (String(s).length) {
case 10: {
return s * 1000
}
case 13: {
return s
}
default: {
console.error('只能格式化10,13位时间戳')
return false
}
}
}
const dateTime = (s, f = 'Y-M-D h:m:s') => {
const scheme = dateObject(s)
if (scheme === false) return false
return f.replace(/[YMDhms]/g, function(m) {
const val = `0${scheme[m]}`
return val.length === 2 ? val : scheme[m]
})
}
const dateObject = (s = Date.now()) => {
s = isTimeStamp(Number(s))
if (s === false) return false
const date = new Date(s)
return {
Y: date.getFullYear(),
M: date.getMonth() + 1,
D: date.getDate(),
h: date.getHours(),
m: date.getMinutes(),
s: date.getSeconds()
}
}
const dateDays = (y, m) => {
if (notNumber(y)) {
console.error(`年必须为number`)
return false
}
if (notNumber(m)) {
console.error(`月必须为number`)
return false
}
if (m % 12 === 0) {
y += 1
m = 1
}
return new Date(y, m, 0).getDate()
}
本站文章由javascript技术分享原创和收集,内容如有问题,请联系站长删除,如若转载请注明原文及出处:https://www.dsiab.com/post/875