【问题标题】:Check difference in seconds between two times检查两次之间的秒差
【发布时间】:2012-02-15 05:54:55
【问题描述】:

大家好,我目前正在做一个项目,当某个事件发生时,有关事件的详细信息(包括事件发生的时间)被添加到列表数组中。

一旦方法完成,我会将列表传递给另一个检查其值的方法。在我通过循环之前,我检查了我的 PC 的当前时间,我需要检查保存在列表数组中的时间与当前时间之间的差异是否大于 5 秒。

我将如何去做。

【问题讨论】:

    标签: c#


    【解决方案1】:

    假设dateTime1dateTime2DateTime 值:

    var diffInSeconds = (dateTime1 - dateTime2).TotalSeconds;
    

    在您的情况下,您将使用DateTime.Now 作为值之一,并将列表中的时间作为另一个值。注意顺序,如果dateTime1 早于dateTime2,结果可能为负。

    【讨论】:

    • 谢谢,顺便说一句,var 最终会变成两倍:TotalSeconds
    • 谢谢...我刚刚被误用了(毫秒)而我应该真正使用(TotalMilliseconds)...哎哟。
    • 如果我用两个相隔 1-2 秒的日期执行此操作,我会得到 63774476745,095 秒。有什么问题?
    【解决方案2】:

    DateTime 有一个 Subtract method 和一个 overloaded - operator 用于这种场合:

    DateTime now = DateTime.UtcNow;
    TimeSpan difference = now.Subtract(otherTime); // could also write `now - otherTime`
    if (difference.TotalSeconds > 5) { ... }
    

    【讨论】:

      【解决方案3】:

      此版本始终将秒数差作为正数返回(结果与@freedeveloper 的解决方案相同):

      var seconds = System.Math.Abs((date1 - date2).TotalSeconds);
      

      【讨论】:

        【解决方案4】:

        我用这个来避免负间隔。

        var seconds = (date1< date2)? (date2- date1).TotalSeconds: (date1 - date2).TotalSeconds;
        

        【讨论】:

        • 改用Math.Abs,这段代码的可读性和性能不如仅使用上面的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 2013-01-07
        相关资源
        最近更新 更多