2013-05-21 37 views
0

我有如下因素代碼,時間跨度時間計算,分 - 豪轉換時間跨度爲int

現在的問題是什麼是瓶坯最好的辦法:

也採取通知「minAdd 「可以通過60,這意味着90分鐘加(一個小時半等)

感謝,

 int minAdd = Convert.ToInt16(txtMinAdd.text); 
     DateTime now = DateTime.Now; 
     DateTime nextEvent = DateTime.Now.AddMinutes(minAdd); 
     TimeSpan diff = now - nextEvent; 
     if (diff > minAdd) -------------- PROBLEM HERE 
     { 
      //act here 
     } 
+2

使用diff.TotalMinutes。請在提問前閱讀[doc](http://msdn.microsoft.com/en-us/library/system.timespan.aspx)。 –

+0

你究竟想在這裏做什麼? –

回答

4

編輯:正如裏德指出,還有你的代碼是非常沒有意義的。我假設你實際上想從其他地方得到nextEvent

我懷疑你只是想:

if (diff.TotalMinutes > minAdd) 
{ 
} 

或者你可以使用:

TimeSpan minTimeSpan = TimeSpan.FromMinutes(Convert.ToInt16(txtMinAdd.text)); 
... 
if (diff > minTimeSpan) 
{ 
} 
+0

差異是基於DateTime生成的 - 沒有理由檢查所有... –

+0

@ReedCopsey:沒有發現那個。我懷疑OP沒有給出代表性的代碼。將編輯提到。 –

+0

我的猜測是OP正在嘗試(或需要)安排一個計時器,但不知道它... –

1

由於diff基於nextEvent,這是基於準確的minAdd,沒有任何理由檢查 - 它永遠不會是真的。

而且,在你的代碼,diff永遠是負面的,如果minAdd是積極的,因爲你從DateTime.Now減去未來事件(nextEvent)。

如果你試圖安排發生在某個時間點的情況下,你可能要考慮使用一個Timer,並調度定時器基於事件的時間在某個時間點出現:

DateTime nextEvent = DateTime.Now.AddMinutes(minAdd); 
TimeSpan diff = nextEvent - DateTime.Now; 

// Schedule a timer to occur here 
someTimer.Interval = diff.TotalMilliseconds; // Timer intervals are typically in ms