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();
        }
    }

測試結果

哈哈,自己感覺不錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章