C#中時間比較的方法


哈嘍,我又來了。

 

今天分享一個在C#中時間比較的方法,可能好多人都知道。

寫這個是因為之前有一個需求是比較當日的時間。

與日期無關,只和時間有關。

比如2021年10月1日的11點30分  的時間部分(11點30分)是否在 2018年的9點之后,如果看日期,肯定是不在的,但如果只看時間,是在之后的。

那么反過來也一樣是否在2018年的18點之前呢,一樣在的。

 

這里的判斷首先就用到C#中我們自帶的DateTime了

DateTime中有一個屬性叫做TimeOfDay,這個是專門用於獲取日期的時間部分,在TimeOfDay中有一個CompareTo的方法

用它就可以輕松完成比較,被比較時間大於比較時間 返回 -1 ,小於比較時間返回 1

下面來看下代碼

        DateTime currentTime = new DateTime(2018, 1, 1, 11, 30, 0);
            DateTime StartTime = new DateTime(2019, 1, 14, 10, 30, 0);
            DateTime EndTime = new DateTime(2021, 1, 14, 18, 30, 0);


            Console.WriteLine("===============Before change :" + currentTime.IsPriorTo(StartTime));
            currentTime = currentTime.AddHours(-2);
            Console.WriteLine("===============After change :" + currentTime.IsPriorTo(StartTime));
        
       public static bool IsPriorTo(this DateTime thisTime,DateTime compareTime)
          {
              return compareTime.TimeOfDay.CompareTo(thisTime.TimeOfDay) == 1;
          }

上面這是個擴展方法,這樣寫看起來語句是要通順一些的。

結果我們打印看一下

 

 

 既然都說到這里了,就順路在說一下判斷當前時間是否在 “開始” 和“結束”區間內怎么寫

     public static bool IsInside(this DateTime thisTime,DateTime startTime,DateTime endTime)
        {
            return startTime.TimeOfDay.CompareTo(thisTime.TimeOfDay) == -1 && endTime.TimeOfDay.CompareTo(thisTime.TimeOfDay) == 1;
        }

 

 

 

當然,這個寫法是給直接拿去用的小伙伴來使用,那么既然剛剛我們已經封裝過了一個時間比較方法了,何不拿來使用呢?

        public static bool IsInside(this DateTime thisTime,DateTime startTime,DateTime endTime)
        {
            return startTime.IsPriorTo(thisTime) && endTime.IsPriorTo(thisTime) == false;
        }

最后的 == False 是為了保證 && 時候的條件

好了,今天的分享就到這里。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM