【问题标题】:C# - Calculating time difference in minutes [duplicate]C# - 以分钟为单位计算时差[重复]
【发布时间】:2017-07-18 13:18:27
【问题描述】:

我有以下代码:

DateTime start = DateTime.Now;
Thread.Sleep(60000);
DateTime end = DateTime.Now;

我想计算开始和结束之间的分钟差。我该怎么做?对于上面的例子,结果应该是 '1'。

提前致谢!

【问题讨论】:

  • 结果不保证为1。可能是1,也可能更大。 Sleep 仅保证在 n 毫秒内不会完成任何工作,而不是在 n 毫秒内恢复工作。如果您的结果有时不正确,请不要感到惊讶。
  • 您应该使用DateTime.Now 来衡量代码的性能。使用System.Diagnostics.Stopwatch。请阅读Five Common Daylight Saving Time Antipatterns of .NET Developers

标签: c# .net datetime time date-difference


【解决方案1】:

您可以使用Subtract 方法和TotalMinutes

var result = end.Subtract(start).TotalMinutes;

如果您需要它而不需要小数分钟,只需将其转换为 int

var result = (int)end.Subtract(start).TotalMinutes;

查看 MSDN 了解更多信息:SubstractTotalMinutes

【讨论】:

  • 谢谢,这比我想象的要容易!
  • 我想问一下,这个例子中var和int有什么区别?
  • @PSawicki,我会去查看 MSDN 而不是问它
  • @PSawicki TotalMinutesdouble,所以 var 也是 double
  • @PSawicki var information
【解决方案2】:

我认为更优雅的方式是使用 Stopwatch-Class

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// Get the elapsed time as a TimeSpan value.
TimeSpan ts = stopWatch.Elapsed;

【讨论】:

  • 这不仅仅是优雅。这是衡量经过时间的唯一正确方法。
【解决方案3】:

简单地取差(如果你愿意,也可以四舍五入):

double preciseDifference = (end - start).TotalMinutes;
int differentMinutes = (int)preciseDifference;

【讨论】:

    【解决方案4】:

    使用TimeSpan

    它代表一个时间间隔,会给你你正在寻找的差异。

    这是一个例子。

    TimeSpan span = end.Subtract ( start );
    
    Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多