计算两个日期之间相差的月数

计算差值(这其中添加了带小时的计算)

data() {
    return {
      startDateString: "2021-01-01 00:00:00",
      endDateString: "2021-10-02 10:00:00",
    };
  },
  created() {
    this.getRemainingTime();
    console.log(this.getRemainingTime());
  },
   methods: {
    getRemainingTime() {
      // 转化为date对象
      const startDate = new Date(this.startDateString);
      const endDate = new Date(this.endDateString);

      // 获取起始日期和结束日期之间的总毫秒数差值
      let timeDiff = endDate.getTime() - startDate.getTime();

      // 一天的毫秒数
      const oneDay = 24 * 60 * 60 * 1000;

      let remainingMonths = 0;
      let remainingDays = 0;
      let remainingHours = 0;

      // 计算剩余的月份数
      while (startDate < endDate) {
        // 获取当前月份的最后一天的日期
        const lastDayOfMonth = new Date(
          startDate.getFullYear(),
          startDate.getMonth() + 1,
          0
        );

        // 获取当前月份的天数
        const daysInMonth = lastDayOfMonth.getDate();

        // 计算当前月份的毫秒数
        const oneMonth = daysInMonth * oneDay;

        // 如果剩余总毫秒数大于等于当前月份的毫秒数,则当前月份完整,剩余总毫秒数减去当前月份的毫秒数,并将剩余月份数加一。
        if (timeDiff >= oneMonth) {
          timeDiff -= oneMonth;
          remainingMonths++;
        } else {
          // 否则剩余时间不足一个月,跳出循环。
          break;
        }

        // 将起始时间设置为下个月的第一天
        startDate.setMonth(startDate.getMonth() + 1, 1);
      }

      // 计算剩余的天数
      remainingDays = Math.floor(timeDiff / oneDay);

      // 计算剩余的小时数
      remainingHours = Math.floor((timeDiff % oneDay) / (60 * 60 * 1000));

      return {
        remainingMonths,
        remainingDays,
        remainingHours,
      };
    },
  },

打印结果

//remainingDays: 1
//remainingHours: 10
//remainingMonths: 9
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值