c# - 难以比较 DateTimes 中的差异

标签 c# winforms datetime comparison

我有一个名为“lastActivated”的 DateTime 变量,它在 Form_Activated 事件触发时设置为 DateTime.Now。目标是确保在用户从另一个屏幕点击屏幕后的前 1 秒内不会发生任何事情。

    DateTime? lastActivate = null; //used to determine the last time the screen was focused. 
    private void Form1_Activated(object sender, EventArgs e)
    {
        lastActivate = DateTime.Now;
    }

判断是否已经超过1秒的代码是这样的

    TimeSpan oneSec = new TimeSpan(0,0,1);

    if (lastActivate == null || (TimeSpan)(lastActivate - DateTime.Now) > oneSec)
    {
        //stuff
    }

上面的 if 语句总是,总是失败。即使值为:

    lastActivate    {11/30/2013 10:23:21 AM}    System.DateTime?
    now {11/30/2013 10:32:48 AM}    System.DateTime

(我创建了一个临时值 DateTime now = DateTime.Now,所以我可以将值粘贴到这里,因为我无法直接访问 DateTime.Now 的值)

有没有人对我做错了什么以及我应该改变什么来实现我所追求的目标有什么建议?

谢谢!

最佳答案

您可以通过这样做来测试两个日期之间的时间:

var lastActivated = DateTime.Now;

if (DateTime.Now.Subtract(lastActivated).TotalSeconds > 1)
{
    // Do whatever you need.
}

DateTime.Subtract(DateTime)返回两个给定日期之间的时间差的 TimeSpan。

关于c# - 难以比较 DateTimes 中的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20302048/

相关文章:

c# - MVP 调用表单

datetime - 转换日期时间字符串(3/24/2017 10 :00:00 PM) to (3-24-2017 22:00:00) hive i. e 从 12 小时格式转换为 24 小时格式

c# - Thread.Sleep 不工作!

c# - PInvoke - 方法的类型签名与 PInvoke 不兼容

c# - 具有多级相关表的数据集

c# - 以编程方式单击 TreeView 中的节点?

c# - 拆分并连接 C# 字符串

c# - UNITY3D - 观看广告后无法执行操作?

datetime - sqlalchemy timedelta 属性

Java - 比较通过表单提交的日期与存储在 mysql 数据库中的日期 - 如何?