2012-10-29 256 views
1

我想知道如何計算兩個日期時間之間的百分比,我有一個BackgroundWorker執行,直到達到所提供的DateTime,該部分工作正常,我只想顯示在UI工人完成的百分比是多少。如何計算兩個日期時間之間的百分比

我試着用下面的辦法:

var now = DateTime.Now; 
var executeUntil = DateTime.Now..AddHours(4).AddMinutes(10); 

var percentage = (int)((executeUntil.Ticks * 100)/now.Ticks); 

但總是返回1,我猜,這是因爲蜱是一個長期的數量並以某種方式被截斷分工。

有什麼建議嗎?

+0

蜱是一種「長」。 –

回答

4

試試這個:

var start = DateTime.Now; 
var end = DateTime.Now.AddMinutes(1); 
var total = (end - start).TotalSeconds; 

for(int i = 0; i < 10; i++) 
{ 
Thread.Sleep(6000); 

var percentage = (DateTime.Now - start).TotalSeconds*100/total; 
Console.WriteLine(percentage); 
} 
+0

這就像一個魅力!謝謝 –

+4

你甚至沒有解釋他做錯了什麼......這些問答網站的重點是教育人們,這樣他們就不會回到這裏。 – Dharun

2

您即將截斷正確。現在,你正在分割很長時間,所以商將有Math.Floor適用於它,也是一個不支持小數的長。要修正您給出的確切代碼,您需要將除數或除數作爲浮點數。這很快使分子成倍增長。

var percentage = (int)((executeUntil.Ticks * 100d)/now.Ticks); 
相關問題