【问题标题】:How do I compare the Time.Elapsed against a condition?如何将 Time.Elapsed 与条件进行比较?
【发布时间】:2020-03-10 11:15:27
【问题描述】:

我创建了一个简单的控制台应用程序,用户必须在其中完成某项任务并测量完成此任务所需的时间。为了测量所花费的时间,我使用了 Stopwatch 类并创建了一个 stopwatch 变量,该变量在用户完成任务后停止

Stopwatch stopwatch = new Stopwatch();
var watch = Stopwatch.StartNew();

然后我将所用时间存储在一个名为 timeTaken

的变量中
TimeSpan timeTaken = watch.Elapsed;

我的问题是,有没有办法将此变量的值与另一个预设时间进行比较? 例如 TimeTaken 。我创建了一个基本的 if 语句来演示我需要什么。

string elapsedTime = String.Format("\n{0:00}:{1:00}:{2:00}",timeTaken.Minutes, timeTaken.Seconds, timeTaken.Milliseconds);

if (elapsedTime == "00:03:00")
{
    Console.WriteLine("Really Fast");
}
else if (elapsedTime == "00:05:00")
{
    Console.WriteLine("Fast");
}

不确定是否可以进行这种比较 我环顾四周但找不到任何东西,提前谢谢。

【问题讨论】:

  • 比较时间跨度,而不是字符串。

标签: c# stopwatch


【解决方案1】:

该结构包含返回毫秒、秒、分钟、小时或天总数的属性,因此只需使用适当的属性即可。例如:

if (timeTaken.TotalSeconds <= 3)
{
    Console.WriteLine("Really Fast");
}
else if (timeTaken.TotalSeconds <= 5)
{
    Console.WriteLine("Fast");
}

【讨论】:

  • 这非常有效,如果可以的话,我会把它标记为答案。谢谢你的帮助肖恩。
  • 另请注意,您可以直接将 TimeSpan 相互比较,例如,您可以输入 if (timeTaken &lt;= TimeSpan.FromSeconds(3) 或(如果您想花哨的话)var threeSecs = TimeSpan.FromSeconds(3); ... if (timeTaken &lt;= threeSecs)
  • 谢谢你,马修,我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多