检查时间是否在特定时间范围内

时间:2019-06-25 10:38:53

标签: javascript

我有一个存储时间值的变量。

var cabtime = ["09:30:00"];

可变时间值是24小时制。这意味着02:30:0PM将以14:30:00的形式出现。

我想检查可变时间是否在08:00AM10:00AM窗口下。如果是,那么我将采取措施。

这方面有什么指针吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法将时间解析为午夜以来的秒数:

var cabtime = ["HH:MM:SS"] // in 24hr time

function parseTime (string) {
    parts = string.split(':').map(x => parseInt(x))
    seconds = parts[0] * 3600 + parts[1] * 60 + parts[0]
    return seconds
}

然后您可以解析时间和上下限,并使用以下方法进行测试:

time = parseTime(cabtime[0])
lower = parseTime('08:00:00')
upper = parseTime('10:00:00')

if (time >= lower && time <= upper) {
    print('Inside the range')
}

答案 1 :(得分:0)

通过将字符串转换为Date对象并进行比较,可以轻松解决该问题。

var cabtime = ["09:30"];

function checkTimeRange(time, from, to, reldate) {
    if (undefined === reldate) {
        reldate = '0000T'; // the date the time strings are related to
    }

    let dtime = new Date(reldate + time);
    let dfrom = new Date(reldate + from);
    let dto   = new Date(reldate + to);

    return dfrom <= dtime && dtime <= dto;
}

checkTimeRange(cabtime[0], '08:00', '10:00'); // returns true

如果您有完整的日期(例如'2019-07-25T09:30:00'),而不仅仅是时钟时间,则应为参数'reldate'提供一个空字符串。


* 更新:将错误的日期格式更改为标准格式

* 更新:再次将日期格式更改为更精美