日期格式化

在这里插入图片描述
在这里插入图片描述

/**
  * 格式化时间对象
  * @param {Date|Number} date  Date对象
  * @param {String}      fmt 目标格式,如:yyyy年MM月dd日,MM/dd/yyyy,yyyyMMdd,yyyy-MM-dd hh:mm:ss等
  * @returns {String}    格式化结果;异常情况下返回空串
  */
const formatDateTime = (date, fmt) => {
  const dateObj = date instanceof Date ? date : new Date(date);
  if (isNaN(dateObj.getTime())) return '';

  let dateStr = fmt || 'yyyy-MM-dd hh:mm:ss';

  // 处理年
  if (/(y+)/.test(dateStr)) {
    // RegExp.$1代表括号里匹配到的字符串
    // '2022'.substr(2) -> '22'
    // 如yyyy年MM月dd日处理为2022年,yy年处理为22年
    dateStr = dateStr.replace(RegExp.$1, (`${dateObj.getFullYear()}`).substr(4 - RegExp.$1.length));
  }

  // 处理月份、日、小时、分、秒、毫秒
  const obj = {
    'M+': dateObj.getMonth() + 1,  // 月份
    'd+': dateObj.getDate(),   // 日
    'h+': dateObj.getHours(),  // 小时
    'm+': dateObj.getMinutes(),  // 分
    's+': dateObj.getSeconds(),  // 秒
    S: dateObj.getMilliseconds(),  // 毫秒
  };

  for (const [key, value] of Object.entries(obj)) {
    if (new RegExp(`(${key})`).test(dateStr)) {
      // RegExp.$1 -> 'M'或'MM' 如果是M的话直接返回月份值如5
      // 如果是MM要将5前面补0,变成'05',其他同理
      dateStr = dateStr.replace(RegExp.$1, (RegExp.$1.length === 1) ? (value) : (`${value}`.padStart(2, '0')));
    }
  }

  return dateStr;
};
formatDateTime('2022-08-16','yyyy年MM月dd日')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值