我如何计算使用DateTime已经过了多少时间?

我有开始操作的按钮单击事件:我如何计算使用DateTime已经过了多少时间?

private void Diagnose_Click(object sender, EventArgs e) 

{

processfinish = false;

timer2.Enabled = true;

timerCount = 0;

count = 0;

countBack = 5;

CreateZip.Enabled = false;

DriverVerifier.Enabled = false;

Diagnose.Enabled = false;

Diagnose.Text = "PROCESSING PLEASE WAIT";

if (this.backgroundWorker1.IsBusy == false)

{

this.backgroundWorker1.RunWorkerAsync();

}

Logger.Write("***** OPERATION STARTED *****");

}

而BackgroundWorker的的完成情况:即启动时,其获得的完成工作

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 

{

processfinish = true;

Logger.Write("***** OPERATION ENDED *****");

}

和Timer1 Tick事件事件:

private void timer1_Tick(object sender, EventArgs e) 

{

count++;

Diagnose.Text = "PROCESS HAS FINISHED" + " " + countBack--;

if (count == 6)

{

Diagnose.Text = "COLLECT INFORMATION";

Diagnose.Enabled = true;

CreateZip.Enabled = true;

ViewLogFile.Enabled = true;

DriverVerifier.Enabled = true;

timer1.Enabled = false;

}

}

我想在我的记录器的文本文件中看到这样的:

Logger.Write("Operation Time Was: " + timepassed); 

而且timepassed将显示分钟和第二例如:

运行时间那句话:05:21

回答:

只需使用一个StopWatchStart()它开始计时,Stop()它当你完成后,然后得到Elapsed时间和format it。

回答:

你可以做

DateTime startTime = DateTime.Now; 

然后你做加工做

DateTime endTime = DateTime.Now; 

//This will give you something like 2hrs 15min or 15 days 11 hours 10 min ect

TimeSpan timePassed = endTime.Subtract(startTime);

这里后是MSDN文档http://msdn.microsoft.com/en-us/library/8ysw4sby.aspx

的优势,使用这种方法(比它特别采用其他DateTime就像你上面指定的那样)是没有定时器运行。你真的没有在这里使用任何资源。您只需在流程开始时和结束时获取DateTime。然后减去它们以获得差异。容易。

回答:

(因为它最好不是线程安全可言,所以如果你有2个操作在同一时间的工作将无法正常工作没有)

声明一个私有变量的最简单方法:

DateTime _start; 

然后在您的Diagnose_Click方法,一个值分配给它:

_start = DateTime.Now; 

而在你backgroundWorker1_RunWorkerCompleted,你可以有时间经过这样的:

TimeSpan elapsed = DateTime.Now - _start; 

而且你可以直接在你的日志文件中使用像写:

Logger.Write("Operation time was: " + elapsed.Minutes + "mn " + elapsed.Seconds + "s"); 

回答:

// Create new stopwatch 

Stopwatch stopwatch = new Stopwatch();

// Begin timing

stopwatch.Start();

// Do something

for (int i = 0; i < 1000; i++)

{

Thread.Sleep(1);

}

// Stop timing

stopwatch.Stop();

// Write result

Console.WriteLine("Time elapsed: {0}",

stopwatch.Elapsed);

以上是 我如何计算使用DateTime已经过了多少时间? 的全部内容, 来源链接: utcz.com/qa/257251.html

回到顶部