簡體   English   中英

檢查記錄中發生更改后是否已過去一天

[英]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。 任何想法? 謝謝你

DateTimeDay屬性

獲取此實例表示的月份中的哪一天。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM