2011-10-16 86 views
2

我知道如何計算兩個日期之間的差異,但是如何計算給定日期和下一個上午8點之間的時間?計算上午8點多少個小時

+1

您是否嘗試過使用兩個DateTimes並使用TimeSpan類? –

+1

所以如果「現在」是凌晨1點,你想要31分鐘作爲你的結果嗎? –

回答

13
var now = DateTime.Now; 
var tomorrow8am = now.AddDays(1).Date.AddHours(8); 
double totalHours = (tomorrow8am - now).TotalHours; 
+0

這真的很清楚,謝謝! – proggrock

+6

不要調用'DateTime.Now'兩次,第一次調用在午夜之前有一個小的風險,並且在第二個之後。相反,將'DateTime.Now'保存在一個變量中並在兩次計算中都使用它。 –

+0

@BenVoigt你是對的。 –

2
var now = DateTime.Now; 
double diffHours = 24 - (now - now.Date).TotalHours + 8; 
+0

也可以寫成'24.0 - DateTime.Now.TimeOfDay.TotalHours + 8.0'或'32.0 - DateTime.Now.TimeOfDay.TotalHours'。 –

0

如何像這樣

var now = DateTime.Now(); 
var target = DateTime.Today.AddDays(1).AddHours(8); 
var result = (target - now).Hour; 
-1

行之有效上午8時相同的前一天。

DateTime now = DateTime.Now; 
DateTime next8am =now.Date.AddHours(8); 
if(now.TimeOfDay>TimeSpan.FromHours(8)) 
    next8am.AddDays(1); 
return next8am.Subtract(now).TotalHours 
相關問題