检查自记录中发生更改以来是否已过去一天

  • 本文关键字:是否 一天 过去 记录 c#
  • 更新时间 :
  • 英文 :


我有点困惑。从今天起,我正在尝试检查锁定日期(我使用的字段,以了解是否需要锁定记录进行编辑(之间的间隔。如果自DateTime.now以来空间超过一天,那么我需要将ViewBag设置为真正的

这就是我迄今为止所尝试的。

var lockRequest = from t in _context.Request

where t.Condition == 2
select t;
foreach (var t in lockRequest)
{
if (DateTime.Now.Day - Convert.ToDateTime(t.RequestLockDate).Day > 1 )
{
ViewBag.isLocked = true;

}
else
{
ViewBag.isLocked = false;
}
}

但它不起作用,它总是回到真实。知道吗?谢谢

DateTime:的Day属性

获取此实例所表示的月份的日期。

日成分,表示为介于1和31之间的值。

因此,您的代码可能会在一个月到下一个月计数器重置时失败。

相反,你可以从另一个DateTime中减去一个,得到一个结果TimeSpan,然后看看它有多长:

if ((DateTime.Now - Convert.ToDateTime(t.RequestLockDate)).TotalHours > 24) {
ViewBag.isLocked = true;
} else {
ViewBag.isLocked = false;
}

或者只是

ViewBag.isLocked = (DateTime.Now - Convert.ToDateTime(t.RequestLockDate)).TotalHours > 24;

比较Day属性可能会给你错误的结果,想象一下2020年12月31日和2020年2月2日

我建议比较日期时间

var locked = Datetime.Today.AddDays(-1) > t.RequestLockDate

这就是检查的方式:

var currentDate = DateTime.Now;
var newDate = t.RequestLockDate;

var isPreviousDay = (currentDate - newDate).TotalDays >= 1;
Console.WriteLine(isPreviousDay);

你试过这种方法吗?

if ((DateTime.Now - Convert.ToDateTime(t.RequestLockDate)) > TimeSpan.FromDays(1))
{
ViewBag.isLocked = true;
}
else
{
ViewBag.isLocked = false;
}

最新更新