时间格式化封装

时间格式化小笔记,后续有新需求再对应添加功能,已知功能有
1.格式化时间
2.在对应的时间上增加年月日时分秒
3.12小时制,24小时制

调用:

dateutil(new Date()).format("YYYY-MM-DD HH:mm:ss") // 格式化时间
dateutil(new Date("2024-03-31 12:59:12")).add(1, 'd').format("YYYY-MM-DD HH:mm:ss");//添加一天
dateutil(new Date("2024-03-31 12:59:12")).add(5, 'mm').format("HH:mm") // 添加5分钟
dateutil(new Date()).format("hh A") // 12小时制。结果: 02 PM

源码

const dateutil = function (date) {
  // 添加方法到 dateutil 返回的对象上
  var utilObj = {
    add: function (amount, unit) {
      switch (unit) {
        case 'y':
          date.setFullYear(date.getFullYear() + amount);
          break;
        case 'm':
          date.setMonth(date.getMonth() + amount);
          break;
        case 'd':
          date.setDate(date.getDate() + amount);
          break;
        case 'hh':
          date.setHours(date.getHours() + amount);
          break;
        case 'mm':
          date.setMinutes(date.getMinutes() + amount);
          break;
        case 'ss':
          date.setSeconds(date.getSeconds() + amount);
          break;
        default:
          console.error('Invalid unit specified');
      }
      return utilObj; // 返回当前对象,以便链式调用
    },
    format: function (formatString) {
      var hours = date.getHours();
      var period = hours >= 12 ? 'PM' : 'AM';
      hours = hours % 12;
      hours = hours ? hours : 12; // 将 0 点转换为 12 点

      var year = date.getFullYear();
      var month = ('0' + (date.getMonth() + 1)).slice(-2);
      var day = ('0' + date.getDate()).slice(-2);
      var minutes = ('0' + date.getMinutes()).slice(-2);
      var seconds = ('0' + date.getSeconds()).slice(-2);

      if (formatString.includes('A')) {
        var formattedDate = formatString
          .replace('YYYY', year)
          .replace('MM', month)
          .replace('DD', day)
          .replace('hh', ('0' + hours).slice(-2))
          .replace('mm', minutes)
          .replace('ss', seconds)
          .replace('A', period);
      } else {
        var formattedDate = formatString
          .replace('YYYY', year)
          .replace('MM', month)
          .replace('DD', day)
          .replace('hh', ('0' + date.getHours()).slice(-2))
          .replace('mm', minutes)
          .replace('ss', seconds);
      }

      return formattedDate;
    }
  };

  return utilObj;
};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值