「我不知道如何檢查,如果當前的日期是數組中的範圍內。」
你會遍歷數組並進行比較。我建議將範圍存儲爲一個對象數組,其中每個單獨的範圍類似於{start: "10:15", end: "10:45"}
。
JavaScript沒有時間對象,只有Date
包含日期和時間信息。所以我認爲將當前時間轉換爲字符串「hh:mm」格式是最容易的,然後只需將簡單的字符串與範圍值進行比較,而不用擔心將範圍值轉換爲日期對象。所以:
var timeRanges = [
{ start: "06:00", stop: "06:30" },
{ start: "12:30", stop: "13:00" },
{ start: "23:45", stop: "00:15" }
]
function isTimeInRange(time) {
for (var i = 0; i < timeRanges.length; i++) {
var range = timeRanges[i]
if ((time > range.start && time < range.stop)
|| (range.start > range.stop && (time > range.start || time < range.stop))) {
return true
}
}
return false
}
但是你可以使代碼更簡潔和更短的,使用array .some()
method,有無arrow functions:
var timeRanges = [
{ start: "06:00", stop: "06:30" },
{ start: "12:30", stop: "13:00" },
{ start: "23:45", stop: "00:15" }
]
function isTimeInRange(time) {
return timeRanges.some(range =>
(time > range.start && time < range.stop)
|| (range.start > range.stop && (time > range.start || time < range.stop))
)
}
function pad(d) {
return ("0" + d).slice(-2)
}
function getCurrentTime() {
var now = new Date()
return pad(now.getHours()) + ":" + pad(now.getMinutes())
}
console.log("Current time in range? " + isTimeInRange(getCurrentTime()))
// test some other times
console.log(isTimeInRange("06:15")) // true
console.log(isTimeInRange("12:35")) // true
console.log(isTimeInRange("13:30")) // false
console.log(isTimeInRange("23:50")) // true
console.log(isTimeInRange("00:14")) // true
很明顯,你可以改變<
和>
到如果需要,可以使用<=
和>=
。
這將是容易得多,如果範圍爲在單個單元像分鐘(例如06:00-0630將是360-390)或秒。你有什麼嘗試?就目前而言,這個問題太廣泛了。你要求某人爲你編寫所有的代碼。 – RobG