如何将日期范围分成几个月

时间:2016-11-08 09:56:02

标签: c#

现在我得到了许多这样的日期范围数据(DataTable):

startDate:endDate:

2016-06-12 2016-08-13

2016-01-12 2016-03-13

...

如何计算今年每个月的总天数? 从1月到11月。

        DataTable dtDateRange = ds1.Tables[0];
        //Create Months
        int[] count = new int[12];
        //loop data
        for (int i = 0; i < dtDateRange.Rows.Count; i++)
        {
            DateTime startTime = ((DateTime)dtDateRange.Rows[i]["STARTDATE"]);
            DateTime endTime = ((DateTime)dtDateRange.Rows[i]["ENDDATE"]);

            for (int a = startTime.DayOfYear; a < endTime.DayOfYear; a++)
            {
                count[startTime.Month-1] = count[startTime.Month-1] + 1;
            }
        }
        foreach (int c in count)
        {
            Console.WriteLine(c);
        }

        Console.ReadKey();

2 个答案:

答案 0 :(得分:0)

也许是这样的。我写在记事本中,所以我不确定它会编译。也许你会在这里和那里需要一个解决方案。如果需要,可以使用List将for循环中的日期添加到容器中。

        DateTime startDate = DateTime.Parse("2016-06-12");
        DateTime endDate = DateTime.Parse("2016-08-13");

        for(DateTime date = startDate, startDate <= endDate, date = date.AddMonths(1) )
            Console.WriteLine(date);

如果您只需要特定日期的月份,您可以通过Month属性从该日期开始询问。

答案 1 :(得分:-1)

试试这个

           DateTime startDate1 = DateTime.Parse("2016-06-12");
            DateTime endDate1 = DateTime.Parse("2016-08-13");
            int days1 = endDate1.Subtract(startDate1).Days;

            DateTime startDate2 = DateTime.Parse("2016-01-12");
            DateTime endDate2 = DateTime.Parse("2016-03-13");
            int days2 = endDate1.Subtract(startDate1).Days;