簡體   English   中英

檢查當前時間是否在 C# 中不同日期的范圍內

[英]Check if the current time fall in range with different date in C#

我想檢查屬於兩個不同日期的時間。 假設我需要從今天晚上 10:30 到明天早上 7 點檢查。

TimeSpan NightShiftStart = new TimeSpan(22, 30, 0);//10:30pm 
TimeSpan NightShiftEnd = new TimeSpan(7, 0, 0); //7am

並比較它

if ((now > NightShiftStart ) && (now < NightShiftEnd )){}

時間跨度無法解決這個問題,我也嘗試過

DateTime t1 = DateTime.Today.AddHours(22);
DateTime t2 = DateTime.Today.AddDays(1).AddHours(7);

仍然沒有運氣。

您可以使用TimeOfDay 屬性並改用它。 所以你的代碼應該是這樣的

if (now.TimeOfDay > NightShiftStart || now.TimeOfDay < NightShiftEnd ){}

編輯:雖然上面的代碼可以滿足您的要求,但這種方式更通用,適用於各種班次,只要您知道它們何時開始和結束:

TimeSpan ShiftStart = new TimeSpan(22, 30, 0);//10:30pm 
TimeSpan ShiftEnd = new TimeSpan(7, 0, 0); //7am

if ((ShiftStart > ShiftEnd && (now.TimeOfDay > ShiftStart || now.TimeOfDay < ShiftEnd))
   || (now.TimeOfDay > ShiftStart && now.TimeOfDay < ShiftEnd))
{
    // ...
}

通常您應該使用 >= 或 <= 來比較 ShiftStart 或 ShiftEnd,因為您希望確切的時間也屬於您的一個班次。

試試這個,這是一個簡單但有效的方法:

private bool CheckIfTimeIsBetweenShift(DateTime time)
{
    var NightShiftStart = new TimeSpan(22, 30, 0); 
    var NightShiftEnd = new TimeSpan(7, 0, 0);

    return NightShiftStart <= time.TimeOfDay && time.TimeOfDay >= NightShiftEnd;
}

暫無
暫無

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

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