我有一个变量: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秒。
我该怎么做?
答案 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
方法。您可以通过Ellapsed
或ElapsedMillis
询问该程序的使用率有多低。