js的时间格式化封装函数

本文参考了余生请指教.
来源:https://blog.csdn.net/qq_15769147/article/details/84617179
不丶懂
来源:https://www.cnblogs.com/baby-zhude/p/4126474.html

一、RegExp

RegExpjavascript中的一个内置对象。是一个正则表达式对象
RegExp.$1是RegExp的一个属性,其有值的前提字符串可以与正则表达式匹配(否则为Boolean的字符串),其值为与正则表达式里面第一个括号匹配的字符串

二、封装函数

Date.prototype.format = function(format) {		// 给Date原型添加format方法
let o = {
  "M+": this.getMonth() + 1,                    // getMonth方法,月份从0开始的
  "d+": this.getDate(),                         // 获得天数
  "H+": this.getHours(),                        // 获得小时,24制
  "h+": this.getHours() > 12 ? this.getHours() - 12 : this.getHours(),  // 获得小时,12制
  "m+": this.getMinutes(),                      // 获得分钟
  "s+": this.getSeconds(),                      // 获得秒数,3位数
  "q+": Math.floor((this.getMonth() + 3) / 3),  // 获得季度
  "f+": this.getMilliseconds(),                 // 获得毫秒
};

if(/(y+)/.test(format)) {						// 获得年份
  format = format.replace(RegExp.$1, this.getFullYear() + "").substr(4 - RegExp.$1.length);
  // RegExp.$1是yyyy(或者yy)的字符串
  // substr方法目的为:当年份是yy时截取从2开始到最后面的字符串,这样年份就变成了2位
  // 				   当年份是yyyy时截取从0开始到最后面的字符串,这样年份就变成了4位
}

for(let k in o) {								// 获得其他的信息
  if(new RegExp(`(${k})`).test(format)) {		// 使用字符串模板在字符串里面解析变量
    format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    // (("00" + o[k]).substr(("" + o[k]).length)))的目的为给天数、小时、分钟、秒数、季度的添0,毫秒无法添0
  }
}

return format;									// 返回经过处理format字符串
};

let date = new Date();							// 实例化Date
console.log(date.format('yyyy/MM/dd HH:mm:ss q--f'));	// 获得当前时间的指定格式

获得年份与获得其他分开写的原因是处理方式不同字符串长度不同(yyyy,dd)

本文只用于个人学习与记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值