我有点困惑。从今天起,我正在尝试检查锁定日期(我使用的字段,以了解是否需要锁定记录进行编辑(之间的间隔。如果自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;
}