[英]Check if has passed one day since change happened in a record
我有點困惑。 從今天開始,我正在嘗試檢查鎖定日期(我用來知道是否需要鎖定記錄以進行編輯的字段)之間的空間。 如果自 DateTime.now 以來空間超過一天,那么我需要將 ViewBag 設置為 true
這是我到目前為止所嘗試的。
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;
}
}
但它不起作用,它總是返回 true。 任何想法? 謝謝你
DateTime
的Day
屬性:
獲取此實例表示的月份中的哪一天。
IE
日部分,表示為 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 屬性可能會給您錯誤的結果,想象一下 31.1.2020 和 1.2.2020
我建議比較日期時間
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.