2011-08-12 29 views
0

我有一個DateTime對象,它是上午10:00 這次表示報告應該運行的時間。需要時間數學指導

我要計算從現在剩餘的時間量,直到我的困惑10:00 AM

部分是現在可能是10後:上午或之前上午10點,

我跟上時間跨度玩弄,但我的結果並不完全正確......我確信這很簡單,但這是我一直在努力的事情之一,並且我需要朝正確的方向努力......

我想timetime對象timeTillRun是正確的......這是我曾嘗試過的:

{ 
    DateTime scheduledRun = DateTime.Today.AddHours(_timeToStart);//_timeToStart = 10 
    TimeSpan timeTillRun = DateTime.Now - scheduledRun; 
} 

回答

1

這將工作...但你需要扭轉減法的順序:

TimeSpan timeTillRun = scheduledRun - DateTime.Now; 

注意,如果上午10點後的當前,timeTillRun將是負面的。您大概也需要檢查當前時間是上午10點還是之後,然後加上10小時和一天DateTime.Today以獲得下一次運行時間。或者,您可以測試timeTillRun是否爲負值;如果是這樣,只需添加一天(timeTillRun += new TimeSpan(1, 0, 0, 0))。

+0

之前我看到@Odnxe只見@ cdhowie/s的答案......我想我的發佈解決方案,但我不知道如何將它添加到question..but是基本上你們都建議了什麼......我非常感謝你!如果我可以發佈我的解決方案,請讓我知道。 – VulcanCCIT

+0

你可以回答你自己的問題。 – Odnxe

1

試試這個

 DateTime timeToStart = DateTime.Today.AddHours(10); 

     TimeSpan timeTillRun; 

     // Checking to see if current time is passed schedule run, if it is then we add a day (this is assuming this is run daily, if days are skipped like weekends for example then this would need some tweaking) 
     if (DateTime.Now > timeToStart) 
      timeTillRun = DateTime.Now.AddDays(1.0) - timeToStart; 
     else 
      timeTillRun = DateTime.Today - timeToStart; 

     double totalHoursRemaining = timeTillRun.TotalHours; // get total hours remaining 
     string prettyRemaining = String.Format("{0} day and {1} hours", timeTillRun.Days, timeTillRun.Hours); // can do some outputting here