2011-04-04 87 views
1

另一個時期內的時間離散時期我有周期的下表描述瞭如何往往..say ..餵我的魚:迭代的時間

 -------------------------------------------------------- 
Period: Jan Feb March April May Jun Jul ... n - 1 .... n 
     -------------------------------------------------------- 
Val_1: 5 2 3  6  3 2 4  x   x 
Val_2 ... 
     -------------------------------------------------------- 

而且我有兩個表示的週期日期時間,開始和結束,即:

DateTime start = new DateTime(2010, 3, 11); 
DateTime end = new DateTime(2012, 7, 12); 

..在哪一次餵養過程發生。我怎樣才能從每個時期的表格中獲得與開始和結束時間相關的數值?

例如,開始和結束時間爲2.5年,但我的表只描述了12個月。在開始和結束的整個時間段內,我如何循環表格中的每個時間段?

我想出了這樣的事情:

class PeriodTableValue 
{ 
    DateTime period; // Ignore year component of datetime 
    double val_1; 
    double val_2; 
} 
void FeedMyFish(double howmuch, DateTime period_start, DateTime period_end) 
{ 
    ... 
} 
... 
PeriodTableValue[] table = ... 
DateTime start = ... 
DateTime end = ... 

DateTime d1 = start; 
for(int i = 0; i < table.Length; i++) 
{ 
    DateTime d2 = table[i].period; 
    int nI = find the occurrances of period table[i]. How ??? 
    for(int j = 0; j < nI; j++) 
    { 
     FeedMyFish(..parameters ???) 
    } 
    d1 = d2; 
} 

而且我堅持在這裏。請指教。

謝謝!

回答

0

article這包括關於各種週期類型的支持和尋求相交時期:

// ---------------------------------------------------------------------- 
public void TimePeriodIntersectorSample() 
{ 
    TimePeriodCollection periods = new TimePeriodCollection(); 

    periods.Add(new TimeRange(new DateTime(2011, 3, 01), new DateTime(2011, 3, 10))); 
    periods.Add(new TimeRange(new DateTime(2011, 3, 05), new DateTime(2011, 3, 15))); 
    periods.Add(new TimeRange(new DateTime(2011, 3, 12), new DateTime(2011, 3, 18))); 

    periods.Add(new TimeRange(new DateTime(2011, 3, 20), new DateTime(2011, 3, 24))); 
    periods.Add(new TimeRange(new DateTime(2011, 3, 22), new DateTime(2011, 3, 28))); 
    periods.Add(new TimeRange(new DateTime(2011, 3, 24), new DateTime(2011, 3, 26))); 

    TimePeriodIntersector<TimeRange> periodIntersector = 
        new TimePeriodIntersector<TimeRange>(); 
    ITimePeriodCollection intersectedPeriods = periodIntersector.IntersectPeriods(periods); 

    foreach (ITimePeriod intersectedPeriod in intersectedPeriods) 
    { 
    Console.WriteLine("Intersected Period: " + intersectedPeriod); 
    } 
    // > Intersected Period: 05.03.2011 - 10.03.2011 | 5.00:00 
    // > Intersected Period: 12.03.2011 - 15.03.2011 | 3.00:00 
    // > Intersected Period: 22.03.2011 - 26.03.2011 | 4.00:00 
} // TimePeriodIntersectorSample