2011-10-10 143 views
1

---- ----編輯之間有多少次出現時間跨度兩個日期時間

哦,對不起,這是一個巨大的misstake :)

讓我再次問這個問題...

這裏有一個例子,

Datetime startTime = 2011-10-08 12:30:00 
Datetime endTime = 2011-10-10 15:00:00 

多少次12:00:00 - 13:00:00兩個日期時間之間發生的呢?

2011-10-08 12:30:00 - 2011-10-08 13:00:00 Not Ok (time has alredy started) 
2011-10-09 12:00:00 - 2011-10-09 13:00:00 Ok 
2011-10-10 12:00:00 - 2011-10-10 13:00:00 Ok 

期待結果2.

在此先感謝!

+1

你爲什麼期望它是三? TimeSpan代表了一段時間。您的示例代表13小時0分鐘和0秒。你能否提供你想要完成的更多細節? –

+0

您是否試圖確定在開始和結束時間之間的時間段內有多少個13小時的時間段,或者您是否試圖確定在給定的開始/結束時間之間有多少時間13:00(1pm)? –

+0

更新了我的第一篇文章 – user943369

回答

1

看到您的更新後,你會想要做類似確定天檢查,並做了邊界檢查,看看是否在特定時代的秋天開始和結束日期內。作爲一個想法,這裏有一些示例代碼我扔在一起。

private static void CheckTimes() 
    { 
     DateTime start = DateTime.Parse("2011-10-08 12:30:00"); 
     DateTime end = DateTime.Parse("2011-10-10 15:00:00"); 
     // variable to use for bound checking (Date property sets the hour to 00) 
     DateTime boundscheck = start.Date; 
     // variable containing results 
     int timesFound = 0; 

     // This loop assumes we are only looking for one match per day 
     for (int i = 0; i <= (end - start).Days; i++) 
     { 
      // set the lower bound to yyyy-mm-dd 12:00:00 
      var lowerbound = boundscheck.Date.AddHours(12); 
      // set the upper bound to yyyy-mm-dd 13:00:00 
      var upperbound = lowerbound.AddHours(1); 
      //determine if bounds are within our start and end date 
      if (lowerbound >= start && upperbound <= end) 
      { 
       timesFound++; 
      } 
      // increment boundscheck variable by one day 
      boundscheck = boundscheck.AddDays(1); 
     } 
    } 

希望這會有所幫助。

+0

非常感謝!正是我在找的!做得好! – user943369

4
(endTime-startTime).Ticks/timeSpan.Ticks 
1

取兩天的差值除以區間。

TimeSpan timeSpan = new TimeSpan(24, 00, 00); // one day 

DateTime start = new DateTime(2011, 10, 08, 11, 00, 00); 
DateTime end = new DateTime(2011, 10, 10, 23, 00, 00); // 2 and 1/2 days later 

var occurances = ((end - start).Ticks/(float)timeSpan.Ticks); // 2.5f 
相關問題