.NET实现每天8小时的计划周期安排分割逻辑

开始时间,比如 2026-03-06 ,按8个小时 为一天,有多个事项

如事项1 , 周期 12小时,事项2,周期3小时, 事项3,周期6小时,事项4,周期5小时。

生成 2026-03-06 干 事项1 8小时

生成 2026-03-07 干 事项1 4小时

生成 2026-03-07 干 事项2 3 小时

生成 2026-03-07 干 事项3 1小时

生成 2026-03-08 干 事项3 5小时

生成 2026-03-08 干 事项4 3小时

生成 2026-03-09 干 事项4 2小时

using System.Collections.Generic;

using System.Diagnostics;

namespace ConsoleApp7

{

internal class Program

{

static void Main(string\[\] args)

{

Console.WriteLine("Hello, World!");

复制代码
        Thing thing1 = new Thing() { ID = 1, hour = 2, Name = "事件1", Order = 1 };

        Thing thing2 = new Thing() { ID = 2, hour = 2, Name = "事件2", Order = 2 };


        Thing thing3 = new Thing() { ID = 3, hour = 4, Name = "事件3", Order = 3 };


        Thing thing4 = new Thing() { ID = 4, hour = 4, Name = "事件4", Order = 4 };
        Thing thing5 = new Thing() { ID = 5, hour = 4, Name = "事件5", Order = 5 };
        Thing thing6 = new Thing() { ID = 6, hour = 13, Name = "事件6", Order = 6 };
        Thing thing7 = new Thing() { ID = 7, hour = 4, Name = "事件7", Order = 7 };
        Thing thing8 = new Thing() { ID = 7, hour = 16, Name = "事件8", Order = 8 };

        List<Thing> things = new List<Thing>();

        things.Add(thing1);
        things.Add(thing2);
        things.Add(thing3);
        things.Add(thing4);
        things.Add(thing5);
        things.Add(thing6);
        things.Add(thing7);
        things.Add(thing8);
        DateTime dateTime = DateTime.Now.Date   ;
        var list = GetManagerItems(dateTime, things, 8);
        string aa = "";
        Console.ReadKey();
    }


  static List<ManagerItem> GetManagerItems ( DateTime begin, List<Thing> itmelist, int hourday=8)
  {
        List<ManagerItem> managerItems = new List<ManagerItem>();
        DateTime CurrentDate = begin;
        int  restHour= hourday;
        int itemHour = 0;
        foreach (Thing thing in itmelist)
        {
            itemHour = thing.hour;
            while (itemHour>0)               
            {

                if (itemHour <= restHour)
                {
                    ManagerItem managerItem = new ManagerItem();
                    managerItem.useHour = itemHour;
                    managerItem.date = CurrentDate;
                    managerItem.useHour = itemHour;

                    managerItem.thing = thing;
                    managerItems.Add(managerItem);
                   
                    restHour = restHour - itemHour;
                    itemHour = 0;


                }
                else                   
                {

                    ManagerItem managerItem = new ManagerItem();
                    managerItem.useHour = itemHour;
                    managerItem.date = CurrentDate;
                    managerItem.useHour = restHour;
                    managerItem.thing = thing;
                    managerItems.Add(managerItem);                     
                    
                    itemHour = itemHour- restHour;
                    restHour = 0;

                }


                if (restHour == 0) {

                    CurrentDate= CurrentDate.AddDays(1);

                    restHour = hourday;

                }


            
            
            
            }



        }



        return managerItems;

  }
 



}


public class Thing
{


    public int  ID    { get; set; }
    public string Name { get; set; }
    //工时
    public  int  hour { get; set; }

    public int Order  { get; set; }
}


public class ManagerItem { 

  public DateTime  date { get; set; }
  public int useHour { set; get; }

    public Thing thing { set; get; }

}

}

相关推荐
糖果店的幽灵4 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
骑上单车去旅行5 小时前
MD5校验对比脚本
linux·服务器·windows
FreeBuf_7 小时前
Windows NT OS内核提权漏洞PoC已公开
windows
雲帝8 小时前
Windows虚拟机UDP大包分片排障
windows·网络协议·udp
李少兄9 小时前
Windows 键盘快捷键指南
windows·计算机外设·快捷键
寒水馨9 小时前
Windows下载、安装scrcpy-v4.1(附安装包scrcpy-win64-v4.1.zip)
windows·scrcpy·投屏工具·安卓投屏·usb调试·android投屏·屏幕镜像
神仙别闹10 小时前
基于QT(C++)实现Windows 自启动项查看和分析
c++·windows·qt
驰骋工作流11 小时前
请假流程:六款.NET工作流引擎实现方式对比
.net·ccflow·工作流引擎二开·.net工作流引擎对比
WarPigs11 小时前
.NET项目app.Config笔记
c#·.net
love530love20 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw