JS Date原型增加format(日期格式化)函数

本文介绍了一种在JavaScript中自定义日期格式的方法,通过扩展Date原型来实现不同格式的日期字符串输出,包括年月日时分秒等多种格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
        }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pixle0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值