You need to enable JavaScript to run this app. 如何从给定输入集计算EndDate?直播课周排期日期时间问题
优惠活动
大模型
产品
解决方案
定价
更多

如何从给定输入集计算EndDate?直播课周排期日期时间问题

周期性周度排期的课程EndDate计算问题

业务场景说明

问题来源于直播流媒体应用的周度固定课程排期功能:教师可从指定起始日开始,安排按周循环的固定上课日程。
以具体排期参数示例说明:

  • 排期起始日:2021年4月18日
  • 每周上课总天数:3天
  • 固定上课日:周一、周二、周三
  • 各上课日可单独设置课程时长,示例统一以单日课程总时长(TDPD)3小时30分钟计算(为当日从课程开始时间起算的课程长度)
  • 示例对应的单周总课程时长:10小时30分钟(周一、周二、周三的单日时长累加值)
  • 系统可允许的最大累计课程总时长:50小时

业务计算规则:按排期顺序逐天累加单日课程时长,直到累计总时长接近50小时的上限,计算累计时长刚好达标的对应日期,即为目标EndDate。

现有实现方案

目前已尝试通过先计算完整周数累计值的方式推进,核心逻辑如下:

int totalWeeks = 0;
int totalHoursPerWeek = 3;
int totalHoursAdded = 0;
int maxHours = 50;
for(int i = totalHoursPerWeek; i <= maxHours; i += totalHoursPerWeek)
{
    totalHoursAdded += i;
    totalWeeks++;
}

循环执行完成后,可得到累计对应的完整周数,后续衔接的日期推算逻辑如下:

DateTime endDate;
if(totalHoursAdded == maxHours)
{
    // 累计总时长刚好达到上限,无剩余待计算时长
    endDate = currentDate.AddDays(totalWeeks * 7);
}
else
{
    // 存在未达到上限的剩余待累计时长
    int pendingHours = maxHours - totalHoursAdded;

    // 卡点:如何将剩余时长匹配到周度固定上课日序列,推算对应的结束日期
}

当前遇到的卡点

当累计完完整周次的总时长后,剩余未达50小时上限的待累计时长,没有明确的匹配规则:无法将零散的剩余时长对应到周循环的固定上课日中,也就无法推算出最终的目标EndDate,目前进度卡在此环节。

内容的提问来源于stack exchange,提问作者Thameem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 07:36:04