2015-11-18 16 views
-5

我有我需要檢查它們是否是連貫時間段的DateTime對象列表。檢查DateTime對象列表是否一致

這是如何完成的?

可能會有時間差距,我需要檢測並採取行動。

編輯: 從我所看到的DateTime對象進行排序。 我有一個TrackerObj類然而Entry類相關僅在日期時間的時間戳,每個跟蹤成立:

public class TrackerObj 
    { 
    private DateTime timeStamp; 
    private string trackerId; 
    private int voltage; 

public TrackerObj(string trackerId, DateTime timeStamp, int voltage) 
    { 
     this.trackerId = trackerId; 
     this.timeStamp = timeStamp; 
     this.voltage = voltage; 

    } 


    } 

唯一的與此有關的時間戳,從數據我見過的排序方式。

編輯:列表是列表該列表上的每個對象都包含DateTime timeStamp。爲了確定日期時間之間的時間段是否「一致」。

我對連貫時間的定義: 每個時間戳都在另一個之後,沒有間隙(時間間隔)的時間段。

DateTime格式:

mm-dd-yyyy hours:minutes:seconds 


private bool arePeriodsCoherent(List<TrackerObj> list) 
{ 
// determine if all the objects on this list are without gaps. Return true if this is true. else return false. 
for(int i=0; i < list.Count; i++) 
{ 
if(list[i].timeStamp > list[i + 1].timeStamp || list[i].timeStamp == list[i + 1].timeStamp) 
{return false;} 
else 
{return true;} 
} 
} 

什麼變化沒有更多鈔票時間戳包含哪些內容?上述代碼是否無法捕捉所有場景?

+1

我認爲你需要擴展你在這裏需要的東西,也許一些示例代碼或一些數據 –

+2

什麼是「連貫」時間段? –

+0

首先是列表還是字典?它們不是同一件事。其次通過「連貫」來定義你的意思。你的意思是你想查出差距嗎?如果是這樣,什麼確定了一個差距。一些代碼或示例數據在這裏會非常有幫助。 – juharr

回答

0

這將找到任何端點連貫TIMEPERIOD:

private List<int> getTimeGapIndexEndPoints(double maxTimeGapSeconds) 
    { 

     int x = 1; 

     List<int> timeLapsIndexes = new List<int>(); 

     for (int i = 0; i < trackerData[trackerId].currentList.Count(); i++) 
     { 
      if (x < trackerData[trackerId].currentList.Count()) 
      { 
       DateTime t1 = trackerData[trackerId].currentList[i].TimeStamp; 
       DateTime t2 = trackerData[trackerId].currentList[x++].TimeStamp; 
       TimeSpan duration = t2.Subtract(t1); 

       if (duration.TotalSeconds > maxTimeGapSeconds) 
       { 
        // MessageBoxResult resultb = System.Windows.MessageBox.Show(this, "After index: "+i+" "+duration+" Duration for trackerId: " + trackerId + " exceed " + maxTimeGapSeconds); 
        timeLapsIndexes.Add(i); 
       } 
      } 
     } 

     return timeLapsIndexes; 
     //for (int j = 0; j < timeLapsIndexes.Count(); j++) 
     //{ 
     // MessageBoxResult resultNumbers = System.Windows.MessageBox.Show(this, "After Index (i+1): " + timeLapsIndexes[j] + " for trackerId: " + trackerId); 
     //} 
    } 

有一個偉大的日子大家。 :)

相關問題