c# 实现两个 DateTime 日期块 分割

    public class DateTimeArea
    {
        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime startTime { get; set; }
        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime endTime { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DateTime starttime = DateTime.Parse("2020-3-30 18:50:44");
            DateTime endtime = DateTime.Parse("2020-4-2 19:50:47");
            List<DateTimeArea> list = new List<DateTimeArea>();
            //分段输出两个时间
            //如果时间是一天内
            if (starttime.Day == endtime.Day)
            {
                //如果是同一天,按照同一天走
                //开始就是开始,结束就是结束
                list.Add(new DateTimeArea() { startTime = starttime, endTime = endtime });
            }
            else
            {
                //开头
                DateTime headStartTime = starttime;
                DateTime headEndTime = new DateTime(starttime.Year, starttime.Month, starttime.Day, 23, 59, 59);
                list.Add(new DateTimeArea() { startTime = headStartTime, endTime = headEndTime });
                //结尾
                DateTime bootStartTime = new DateTime(endtime.Year, endtime.Month, endtime.Day, 0, 0, 0);
                DateTime bootEndTime = endtime;
                //需要遍历的天
                int day = (bootStartTime - headEndTime).Days;
                if (day > 0)
                {
                    for (int i = 0; i < day; i++)
                    {
                        DateTime CenterEnd = headEndTime.AddDays(i + 1);
                        DateTime CenterStart = new DateTime(CenterEnd.Year, CenterEnd.Month, CenterEnd.Day, 0, 0, 0);
                        list.Add(new DateTimeArea() { startTime = CenterStart, endTime = CenterEnd });
                    }
                }
                list.Add(new DateTimeArea() { startTime = bootStartTime, endTime = bootEndTime });
            }
            Console.WriteLine($"分割的开始时间{starttime} 结束时间{endtime}");
            Console.WriteLine();
            foreach (var item in list)
            {
                Console.WriteLine($"开始时间{item.startTime} 结束时间{item.endTime}");
            }
            Console.ReadLine();
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值