js 两个日期间工作时长,不抛出节假日,每日8小时计算

    const workTime = function (start, end) {
      start = new Date(start);
      end = new Date(end);
      const at = 8.5,
        bt = 1.5,
        ct = 6,
        dt = 16,
        startDate = start.toLocaleDateString(), // 日期
        endDate = end.toLocaleDateString();
      let res = (end - start) / 1000 / 3600;

      // 同一天
      if (startDate === endDate) {
        if (start.getHours() < 12 && end.getHours() > 12) {
          res = res - bt;
        }
      }
      else {
        // 相差一天
        res = res - at - ct;
        if (start.getHours() < 12) {
          res = res - bt;
        }
        if (end.getHours() > 12) {
          res = res - bt;
        }
        // 超过一天
        const cDate = (new Date(endDate) - new Date(startDate)) / 3600 / 24 / 1000;
        if (cDate > 1) {
          res = res - dt * (cDate - 1);
        }

      }
      return res;
    }

    console.log(workTime('2017/03/15 9:30', '2017/03/16 16:30'));
// 8:30上班,下午1:30上班,6点下班

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jigsaw

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

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

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

打赏作者

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

抵扣说明:

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

余额充值