C#中時間比較的方法
阿新 • • 發佈:2021-01-20
哈嘍,我又來了。
今天分享一個在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 是為了保證 && 時候的條件
好了,今天的分享就到這裡。