在javascript中检查小时范围之间的时间

时间:2016-08-02 04:52:09

标签: javascript node.js datetime timestamp-with-timezone

我想检查一下我的时间是在晚上10点到早上6点之间还是在12点到6点之间 我写了相同的代码,代码工作,但我不知道它是否仍然适用于所有情况。 我也觉得代码应该高效且简单,足以解决这个问题。

我提供了时区(数字,例如3表示+3)和时间(字符串" 10to6"或" 12to6"或" off") 我的服务器的时区是GMT。

  

代码:

function(timezone, timing) {
    var utcDate = new Date();
    var udate = utcDate.getTime();
    udate += (Number(timezone) * 60 * 60 * 1000);
    var userDate = new Date(udate);
    if (userDate.getHours() > 0 && userDate.getHours() < 22) {
        var firstStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() - 1, 22, 0, 0);
        var firstEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 6, 0, 0);
        var secondStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() - 1, 24, 0, 0);
        var secondEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 6, 0, 0);
    } else {
        var firstStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 22, 0, 0);
        var firstEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() + 1, 6, 0, 0);
        var secondStart = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate(), 24, 0, 0);
        var secondEnd = new Date(userDate.getFullYear(), userDate.getMonth(), userDate.getDate() + 1, 6, 0, 0);
    }
    if (timing == "off") {
        return true;
    }
    if (timing == "10to6") {
        if (udate > firstStart.getTime() && udate < firstEnd.getTime()) {
            return false;
        }
    } else if (timing == "12to6") {
        if (udate > secondStart.getTime() && udate < secondEnd.getTime()) {
            return false;
        }
    }
    return true;
}

如果有任何其他更好的方法或方法证明这一点一直在运作,那么任何想法都是最受欢迎的。

0 个答案:

没有答案