簡體   English   中英

如何在 C# 中檢查日期是否已經過去?

[英]How to check if a date has passed in C#?

我正在從數據庫中讀取 cookie 的過期日期(2 小時),我需要檢查該日期是否已過。 做到這一點的最佳方法是什么?

例如:

public bool HasExpired(DateTime now)
{
    string expires = ReadDateFromDataBase(); // output example: 21/10/2011 21:31:00
    DateTime Expires = DateTime.Parse(expires);
    return HasPassed2hoursFrom(now, Expires);
}

我正在尋找編寫.HasPassed2hoursFrom方法的想法。

public bool HasPassed2hoursFrom(DateTime fromDate, DateTime expireDate) 
{
    return expireDate - fromDate > TimeSpan.FromHours(2);
}
public bool HasExpired(DateTime now)
{
    string expires = ReadDateFromDataBase(); // output example: 21/10/2011 21:31:00
    DateTime Expires = DateTime.Parse(expires);
    return now.CompareTo(Expires.Add(new TimeSpan(2, 0, 0))) > 0;
}

但是由於 DateTime.Now 非常快,您不需要將其作為函數參數傳遞...

public bool HasExpired()
{
    string expires = ReadDateFromDataBase(); // output example: 21/10/2011 21:31:00
    DateTime Expires = DateTime.Parse(expires);
    return DateTime.Now.CompareTo(Expires.Add(new TimeSpan(2, 0, 0))) > 0;
}
bool HasPassed2hoursFrom(DateTime now, DateTime expires)
{
    return (now - expires).TotalHours >= 2;
}

定期檢查日期,看看now.CompareTo(expires) > 0

private enum DateComparisonResult
    {
        Earlier = -1,
        Later = 1,
        TheSame = 0
    };

    void comapre()
    {
        DateTime Date1 = new DateTime(2020,10,1);
        DateTime Date2 = new DateTime(2010,10,1);

        DateComparisonResult comparison;
        comparison = (DateComparisonResult)Date1.CompareTo(Date2);
        MessageBox.Show(comparison.ToString());    
    }
    //Output is "later", means date1 is later than date2 

要檢查日期是否已過:

來源: https : //msdn.microsoft.com/en-us/library/5ata5aya%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

你可以只使用運算符

boolean hasExpired = now >= Expires;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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