我有一个名为“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/