2016-11-08 84 views
-4

現在我得到很多的日期範圍內的數據(數據表)是這樣的:我怎麼可以拆分日期範圍爲月

開始日期:結束日期:

2016年6月12日2016年8月13日

2016年1月12日2016年3月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(); 
+5

目前尚不清楚你的意思......你是否基本上要維持12次計數(假設你通常會到12月份)並根據每個範圍更新這些計數?你有沒有嘗試過任何東西?你有多遠? –

+0

請提供[mcve] – Mafii

+0

真的不知道我明白。你是說你想要6月份的18,7月份的31,8月份的13,使用你的第一個日期範圍? – sr28

回答

0

也許這樣的事情。我寫了記事本,所以我不確定它會編譯。也許你需要在這裏和那裏修復。如果需要,您可以使用列表將來自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屬性要求它從該日起。

+0

這是Instructive.thx – Puz

-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;