如何根据DateTime.Now计算用户使用程序的时间?

时间:2012-06-13 20:58:11

标签: c#

我有一个变量:string currentTime in the constructor:

currentTime = DateTime.Now.ToString("HH:mm:ss tt");

在事件Form1_FormClosing中我有:

currentTimeClosed = DateTime.Now.ToString("HH:mm:ss tt");

现在我想计算两个字符串之间的diffrenece,并获得用户使用currenttimeClosed - currentTime = 10 minutes and 10 seconds之类的时间 所以我知道用户使用该程序10分10秒。

我该怎么做?

4 个答案:

答案 0 :(得分:0)

不要将日期和时间存储为字符串。相反,请使用DateTime类型:

在构造函数中声明您的变量,如下所示:

DateTime currentTime;

然后,您可以在程序启动时指定日期和时间,如下所示:

currentTime = DateTime.Now;

每当您需要运行时间时,请按以下方式计算:

TimeSpan runningTime = DateTime.Now - currentTime;

请参阅TimeSpan documentation; TimeSpan提供了各种属性,可以了解程序运行的时间。

答案 1 :(得分:0)

将值存储为DateTime s,然后进行计算。这将产生TimeSpan,其中包含所需的结果。

答案 2 :(得分:0)

首先,您不需要存储字符串 - 只需直接存储DateTime

您可以减去这两个以获得TimeSpan告诉您差异并输出其值。

// fields
DateTime currentTime;
DateTime currentTimeClosed;

// Somewhere in constructor
currentTime = DateTime.Now;

// in Form1_FormClosing
currentTimeClosed = DateTime.Now;

var difference = currentTimeClosed  - currentTime;

Console.Write(string.Format("{0} minutes and {1} seconds", 
                            (int)difference.TotalMinutes, 
                            difference.Seconds));

答案 3 :(得分:0)

我实际上会使用StopWatch。创建它并将其存储在一个memeber变量中,并在构造函数中调用Start()方法。然后在Stop()中调用Form1_Unload方法。您可以通过EllapsedElapsedMillis询问该程序的使用率有多低。