如何计算两个DateTime之间的百分比

时间:2012-10-29 03:35:13

标签: c# datetime

我想知道如何计算两个DateTime之间的百分比,我有一个BackgroundWorker执行,直到达到提供的DateTime,该部分工作正常,我只想在UI中显示工人完成的百分比是多少

我尝试使用以下方法:

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

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

但总是返回1,我猜这是因为Ticks是一个很长的数字而且不知何故正在截断该部门。

有什么建议吗?

2 个答案:

答案 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);
}

答案 1 :(得分:3)

你对截断是正确的。现在你用long来划分,所以商应用Math.Floor并且也是一个不支持小数的long。要修复您给出的确切代码,您需要将除数或被除数设为浮点数。这很快就会使分子变为双倍。

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