2014-05-14 59 views
-1

我的应用程序中有两个按钮“开始”和“停止”。获取时间差异

当用户单击开始按钮时,LabelStartTime.Text包含当前系统时间(HH:MM AM/PM)。

当用户点击停止按钮LabelStopTime.Text包括当前系统时间和LabelTotle.Text

我试图表现出分钟的时间差。我只知道如何获得标签值的当前时间。

lblCurrentTime.Text = DateTime.Now.ToShortTimeString(); //获取当前时间

 private void button1_Click(object sender, EventArgs e) 
    { 
     lblCurrentTime.Text = DateTime.Now.ToShortTimeString(); // get system time to the Start time 

     Stopwatch stopWatch = new Stopwatch(); 
     stopWatch.Start(); 
    } 


    private void button2_Click(object sender, EventArgs e) 
    { 
     Stopwatch stopWatch = new Stopwatch(); 
     stopWatch.Stop(); 

     textBox1.Text = DateTime.Now.ToShortTimeString(); 
     lblCurrentPrice.Text = Stopwatch.Elapsed.TotalMinutes; 



    } 

本 - >Stopwatch.Elapsed.TotalMinutes定错误

+2

解析两个时间值'TimpeSpan',然后用减法'TS2得到他们的差异 - ts1',以后你会得到TotalMinutes像'(TS2 - TS1 ).TotalMinutes' – Habib

+0

'DateTime - DateTime'会给你一个Timespan而不先解析它们 – Jonesopolis

+0

@Jonesy,在这种情况下,OP必须保持开始DateTime并在代码的某个地方结束DateTime,因为只显示时间部分然后解析它到时间跨度将是可行的。 – Habib

回答

4

考虑使用System.Diagnostics.Stopwatch类。点击第一个按钮时调用Start(),点击第二个按钮时调用Stop()。然后,以分钟为单位的差值为Stopwatch.Elapsed.TotalMinutes;

在代码示例中,您现在已声明两个new秒表,它们只存在于每个方法的范围内。

声明像这样的方法外:

Stopwatch stopWatch = new Stopwatch(); 

private void button1_Click(object sender, EventArgs e) 
{ 
    // get system time to the Start time 
    lblCurrentTime.Text = DateTime.Now.ToShortTimeString(); 

    stopWatch.Start(); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    stopWatch.Stop(); 

    textBox1.Text = DateTime.Now.ToShortTimeString(); 
    lblCurrentPrice.Text = Stopwatch.Elapsed.TotalMinutes; 
} 
+0

哇@webturner甚至不知道你可以用'Elapsed'做到这一点 - 很好。 – Haney

+0

先生,你可以解释羽毛怎么做im interresting – DinoBaba

+1

@DinoBaba阅读文档并查看示例:http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx – tnw