[筆記] JavaScript 跨日判斷與非連續時間範圍檢查

章節連結

近期在撰寫時間判斷的業務邏輯時,遇上要開始結束時間跨日 + 每日能使用的時段範圍是不連續的。這邊筆記下思路。
javascript es6 logo


內容

場景舉例:使用者選擇 2024/1/1 16:00 ~ 2024/1/2 11:00 的時段使用器材,但折扣碼每天能使用的時段是 10:00 ~ 18:00。

思路

1. 非跨日

判斷「開始時間」和「結束時間」是否在「規定的時段範圍」內即可。日期的話 3 者都是一樣的

2. 跨日

依序執行以下判斷:
2-1. 「開始時間」是否在「開始日期規定的時間範圍內」
2-2. 「結束時間」是否在「結束日期規定的時間範圍內」,結束日期會是開始日期 + 1
2-3. 計算「開始時間與結束時間」和「開始日期規定的時間範圍尾巴與結束日期規定的時間範圍開始」是否有重疊區間,縱使是沾到邊也算

判斷條件是:2-1 需為 true、2-2 需為 true 且 2-3 需為 false ( 也就是沒有 overlap )


程式碼

按讚加入粉絲團

延伸閱讀