获取工作日和特定时间

时间:2013-12-13 10:15:51

标签: javascript

我正在使用javaScript在工作日和营业时间(周一至周五08:00到16:50)之间显示元素。

我正在使用此代码:

var date = new Date();
var thisMin = date.getMinutes();
var thisHour = date.getHours();
var thisWeekday = date.getDay();
// True if Mon - Fri between 08:00 - 16:50
if (thisWeekday > 0 && thisWeekday < 6 && thisHour > 7 && (thisHour < 17 && thisMin <= 50)) {
    alert("True");
} else {
    alert("False");
}

- 但这是编码的最佳方式吗?它看起来像很多条件而且一直都在工作......用javaScript可以用更好的方式完成它吗?

Fiddle here

感谢。

2 个答案:

答案 0 :(得分:2)

请注意,您的条件有两个不同的部分“必须在一周内”和“必须在时间间隔内”。代码可以通过明确地更清楚地反映这一点。

对于时间比较,我会重新设定当前时间,以便您可以使用Date的{​​{1}}和<=运算符,而不是自己重新实现时间比较:

>=

手动测试:

var startTime = new Date(0, 0, 0, 8, 0);
var endTime = new Date(0, 0, 0, 16, 50);
var startWeekday = 1;
var endWeekday = 5;

function shouldDisplay() {
    var d = new Date();

    function withinWeekInterval() {
        return (d.getDay() >= startWeekday &&
                d.getDay() <= endWeekday);
    }

    function withinTimeInterval() {
        var now = new Date(0, 0, 0, d.getHours(), d.getMinutes());
        return (now >= startTime &&
                now <= endTime);
    }

    return (withinWeekInterval() && withinTimeInterval());
}

答案 1 :(得分:0)

尝试以下代码:

var date = new Date();
var thisMin = date.getMinutes();
var thisHour = date.getHours();
var thisWeekday = date.getDay();
var isSuccess = false;
// True if Mon - Fri between 08:00 - 16:50
if (thisWeekday > 0 && thisWeekday < 6 && thisHour > 7 && (thisHour < 17)) {
    if (thisHour == 16 && thisMin > 50) {
        isSuccess = false;
    } else {
        isSuccess = true;
    }
} else {
    isSuccess = false;
}

alert(isSuccess);