时间差脚本出错,服务时间问题?

* 描述问题

使用工作流中的JS脚本进行时间差计算时,结果出错(已排除脚本问题)

* 运行环境

demo环境

如何重现

JS脚本如下:

// const http = require('http')
/**
 * 计算两个时间点之间的有效工作时长(单位:小时)
 * 排除午休时间、周末和法定节假日
 * @param {Date} startTime 开始时间
 * @param {Date} endTime 结束时间
 * @param {string[]} holidays 法定节假日日期数组(格式:'YYYY-MM-DD')
 * @param {string[]} patchdays 补班日期
 * @returns {number} 有效工作时间(小时),保留两位小数
 */

const DateData = await syncHolidays()
// 国家法定节假日
const holidays = DateData.filter(i=> i.status ===  3).map(i=>i.date) || []

const patchdays =  DateData.filter(i=>i.status === 2).map(i=>i.date)

function calculateWorkingHours(startTime, endTime) {
  // 工作时间段配置(24小时制,小数表示分钟)
  const workPeriods = [
    { start: 8.5, end: 12.5 },  
    { start: 14, end: 18 }    
  ];

  // 日期格式转换工具
  const toISODate = date => date.toISOString().slice(0, 10);
  
  let total = 0;
  const current = new Date(startTime);
  const end = new Date(endTime);

  // 跨天处理循环
  while (current < end) {
    const dayStart = new Date(current);
    dayStart.setHours(0, 0, 0, 0);  // 当天零点
    
    const nextDay = new Date(dayStart);
    nextDay.setDate(nextDay.getDate() + 1);  // 次日零点

    // 判断是否工作日(排除周末和节假日)
    const isWeekend = current.getDay() % 6 === 0 
    const isHoliday = holidays.includes(toISODate(current));
    const isPatchDay = patchdays.includes(toISODate(current))
    const isWorkingDay = isPatchDay ? true : !isWeekend && !isHoliday;

    if (isWorkingDay) {
      // 计算当天有效时间范围
      const dayEffectiveStart = new Date(Math.max(current, dayStart));
      const dayEffectiveEnd = new Date(Math.min(end, nextDay));

      // 工作时间段计算
      for (const period of workPeriods) {
        const periodStart = new Date(dayStart);
        periodStart.setHours(Math.floor(period.start), (period.start % 1) * 60);
        
        const periodEnd = new Date(dayStart);
        periodEnd.setHours(Math.floor(period.end), (period.end % 1) * 60);

        // 计算时间段交集
        const overlapStart = new Date(Math.max(dayEffectiveStart, periodStart));
        const overlapEnd = new Date(Math.min(dayEffectiveEnd, periodEnd));
        
        if (overlapStart < overlapEnd) {
          total += (overlapEnd - overlapStart) / 3600000; // 毫秒转小时
        }
      }
    }

    current.setDate(current.getDate() + 1);  // 移至下一天
  }

  return Number(total.toFixed(2));
}


async function syncHolidays() {
  // const year  = new Date().getFullYear();
    // const url = `http://api.haoshenqi.top/holiday?date=${year}`;
    // return new Promise(resove=>{
    //   // 发起 HTTP 请求
    //   http.get(url, (res) => {
    //     let data = '';
    //     // 数据块接收
    //     res.on('data', (chunk) => {
    //       data += chunk;
    //     });
    //     // 请求完成后,输出响应内容
    //     res.on('end', () => {
    //       const _d = JSON.parse(data)
    //       resove(_d)
    //     });

    //   }).on('error', (err) => {
    //     console.log('Error: ' + err.message);
    //   });
    // })
  return []
}

// 在工作流中使用参数
const timeDifference = calculateWorkingHours(begtime11, endtime11);

// 将结果返回给工作流
return timeDifference;

截图

4fbd841eae380fcf77e941bcb1c3141

提交时间的格式跟服务器返回的时间格式不一样,害苦我了。 应该了说明一下服务器返回的时间格式