以下是一个实现该功能的示例代码:

function calculateLeaveDays() {
  var startDate = document.getElementById('start-date').value;
  var startTime = document.getElementById('start-time').value;
  var endDate = document.getElementById('end-date').value;
  var endTime = document.getElementById('end-time').value;

  var startDateTime = new Date(startDate + ' ' + startTime);
  var endDateTime = new Date(endDate + ' ' + endTime);

  var days = 0;

  // 计算请假天数
  while (startDateTime < endDateTime) {
    var startHour = startDateTime.getHours();
    var endHour = endDateTime.getHours();

    // 判断是否跨天
    if (startDateTime.getDate() < endDateTime.getDate()) {
      // 加一天
      days += 1;
      startDateTime.setDate(startDateTime.getDate() + 1);
      // 重置开始时间为0:00
      startDateTime.setHours(0, 0, 0, 0);
    } else {
      // 判断时间段是否在上午或下午工作时间区间内
      if ((startHour >= 0 && startHour < 12) || (endHour >= 12 && endHour < 24)) {
        days += 0.5;
      }
      break;
    }
  }

  // 填入请假天数
  document.getElementById('leave-days').value = days;
}

上面的代码假设页面上有以下元素:

  • start-date:开始日期的输入框(格式为'YYYY-MM-DD')
  • start-time:开始时间的输入框(格式为'HH:mm')
  • end-date:结束日期的输入框(格式为'YYYY-MM-DD')
  • end-time:结束时间的输入框(格式为'HH:mm')
  • leave-days:请假天数的输入框

你可以根据实际情况修改代码中的元素选择器和日期时间格式。

在页面中选择开始时间和结束时间后,调用calculateLeaveDays函数即可计算并填入请假天数。


原文地址: https://www.cveoy.top/t/topic/p8Ps 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录