Date.prototype.format = function(type) {
let _timeStamp;
if(this instanceof Date){
_timeStamp = this.getTime();
}
else{
_timeStamp=new Date().getTime()
}
function formatTimeStamp(type, timeStamp = _timeStamp) {
if (typeof _timeStamp === 'number' && !isNaN(_timeStamp)) {
let res = '';
let date = new Date(timeStamp)
let year = date.getFullYear()
let month = (date.getMonth() + 1).toString().padStart(2, '0')
let day = date.getDate().toString().padStart(2, '0')
let hour = date.getHours().toString().padStart(2, '0')
let minus = date.getMinutes().toString().padStart(2, '0')
let second = date.getSeconds().toString().padStart(2, '0')
switch (type) {
case 'yyyy':
res = `${year}`
break;
case 'yyyy-MM':
res = `${year}-${month}`
break;
case 'yyyy-MM-dd':
res = `${year}-${month}-${day}`
break;
case 'yyyy-MM-dd HH:mm':
res = `${year}-${month}-${day} ${hour}:${minus}`
break;
case 'yyyy-MM-dd HH:mm:ss':
res = `${year}-${month}-${day} ${hour}:${minus}:${second}`
break;
case 'yyyy.MM.dd HH:mm':
res = `${year}.${month}.${day} ${hour}:${minus}`
break;
case 'yyyy.MM.dd HH:mm:ss':
res = `${year}.${month}.${day} ${hour}:${minus}:${second}`
break;
case 'HH:mm:ss':
res = `${hour}:${minus}:${second}`
break;
case 'HH:mm':
res = `${hour}:${minus}`
break;
}
return res
}
return this
}
return formatTimeStamp.call(this, type)
}
console.log(new Date().format('yyyy'))
console.log(new Date().format('yyyy-MM'))
console.log(new Date().format('yyyy-MM-dd'))
console.log(new Date().format('yyyy-MM-dd HH:mm'))
console.log(new Date().format('yyyy-MM-dd HH:mm:ss'))
console.log(new Date().format('HH:mm:ss'))
console.log(new Date().format('HH:mm'))
console.log(new Date(1641081600000).format('yyyy-MM-dd'))
vue脚手架项目如果直接使用Date.prototype.format会报错,可以换 Object.defineProperty在Date原型上添加format方法
Object.defineProperty(Date.prototype, 'format', {
value(type) {
let _timeStamp;
if (this instanceof Date) {
_timeStamp = this.getTime();
}
else {
_timeStamp = new Date().getTime()
}
function formatTimeStamp(type, timeStamp = _timeStamp) {
if (typeof _timeStamp === 'number' && !isNaN(_timeStamp)) {
let res = '';
let date = new Date(timeStamp)
let year = date.getFullYear()
let month = (date.getMonth() + 1).toString().padStart(2, '0')
let day = date.getDate().toString().padStart(2, '0')
let hour = date.getHours().toString().padStart(2, '0')
let minus = date.getMinutes().toString().padStart(2, '0')
let second = date.getSeconds().toString().padStart(2, '0')
switch (type) {
case 'yyyy':
res = `${year}`
break;
case 'yyyy-MM':
res = `${year}-${month}`
break;
case 'yyyy-MM-dd':
res = `${year}-${month}-${day}`
break;
case 'yyyy-MM-dd HH:mm':
res = `${year}-${month}-${day} ${hour}:${minus}`
break;
case 'yyyy-MM-dd HH:mm:ss':
res = `${year}-${month}-${day} ${hour}:${minus}:${second}`
break;
case 'yyyy.MM.dd HH:mm':
res = `${year}.${month}.${day} ${hour}:${minus}`
break;
case 'yyyy.MM.dd HH:mm:ss':
res = `${year}.${month}.${day} ${hour}:${minus}:${second}`
break;
case 'HH:mm:ss':
res = `${hour}:${minus}:${second}`
break;
case 'HH:mm':
res = `${hour}:${minus}`
break;
}
return res
}
return this
}
return formatTimeStamp.call(this, type)
}
})