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

前端 未结 6 1376
执笔经年
执笔经年 2021-01-05 03:24

I\'m reading the date expires cookie (2 hours) from database, and I need to check if this date has passed. What\'s the best way to do this?

For example:

<         


        
相关标签:
6条回答
  • 2021-01-05 03:58
    bool HasPassed2hoursFrom(DateTime now, DateTime expires)
    {
        return (now - expires).TotalHours >= 2;
    }
    
    0 讨论(0)
  • 2021-01-05 03:58

    Periodically check the date and see if now.CompareTo(expires) > 0

    0 讨论(0)
  • 2021-01-05 04:02
    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 
    

    To check if date has passed:

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

    0 讨论(0)
  • 2021-01-05 04:03
    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;
    }
    

    But since DateTime.Now is very fast and you don't need to pass it as function parameter...

    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;
    }
    
    0 讨论(0)
  • 2021-01-05 04:03

    You can just use operators

    boolean hasExpired = now >= Expires;
    
    0 讨论(0)
  • 2021-01-05 04:06
    public bool HasPassed2hoursFrom(DateTime fromDate, DateTime expireDate) 
    {
        return expireDate - fromDate > TimeSpan.FromHours(2);
    }
    
    0 讨论(0)
提交回复
热议问题