2011-06-28 68 views
-4

我有日期時間,我從我的數據庫中獲取的實例,我想從DateTime.Now減去它,看看獲得通過4小時。我怎麼做?如何從另一個減去一個日期時間?

還當我應該使用DateTime.UTCNowDateTimeOffset

+0

重複所有的Stackoverflow ... http://stackoverflow.com/questions/2624687/c-how-do-i-subtract-two-dates – Binil

+3

-1,因爲你沒有做任何研究,甚至想到你自己。 –

+0

我搜索谷歌。我擔心會mistake..it的是一個很大的代碼的一部分,我有 – Matrix001

回答

5

您可以使用減法運算符來獲得一個TimeSpan

private static readonly TimeSpan MinimumTime = TimeSpan.FromHours(4); 

... 

if ((dateFromDatabase - DateTime.Now) > MinimumTime) 
{ 
    ... 
} 

至於是否需要UTCNowNow ...這將取決於發生了什麼時區,當您從數據庫中讀取數據。 DateTime是不是在這方面:(

非常清楚,如果你能獲取值作爲DateTimeOffset與啓動,那麼你可以使用DateTimeOffset.Now代替,它應該是簡單的工作,任何時區的問題。

+0

我有一個網站,是在我的本地語言(非英語),所以我不認爲我會有時區 – Matrix001

+0

@ Matrix001的問題:語言和時區是非常不同的事情。這將取決於如何在數據庫存儲(返回)'DateTime'值等,不要認爲它會好起來的,只是因爲一切都在一個時區... –

+0

所以,如果它存儲14:00,我可能結束16:00開始?它取決於數據庫的位置?我讀過DateTime對區域變化敏感,而DateTimeOffset不是..所以我怎麼會遇到使用DateTime的麻煩? – Matrix001

4

DateTime.Subtract

首先谷歌打..

+1

也重複:http://stackoverflow.com/questions/6304514/how-to-subtract-datetime-values-and-get-在時間 – rciq

+1

除了那不是真正做到這一點的慣用方式,因爲你可能想使用減法運算符* *。 –

+0

當然,但我的觀點更多的是,他可以在瀏覽器的地址欄中鍵入2個單詞以獲得答案。 ;)該頁面上還描述了運算符樣式。 :) –

3

試試這個:

bool fourHoursPassed = date.AddHours(4) < DateTime.Now; 

或這實際執行減法:

bool fourHoursPassed = (DateTime.Now - date).TotalHours > 4; 
1

DateTime.Subtract

DateTime myDateTime = someValue; TimeSpan ts = DateTime.Now -myDateTime; if(ts.Hours>=4) { doSomething(); }

希望它能幫助。

1

DateTime dt = new DateTime(2011,07,10); DateTime dob = new DateTime(1987,07,10);

你可以簡單地減爲: 時間跨度年齡= DT - 出生日期;