开放时间 - DIV取决于一周和小时的一天



我有一个脚本,该脚本根据一周和一天中的时间显示不同的div。他效果很好。我需要修改它。我想每天设置不同的开放时间。我怎样才能做到这一点?请帮助。

示例

星期一从8:00到16:00开放
星期二从8:00到16:00开放
周三从8:00到18:00开放
周四从8:00到18:00开放
星期五从8:00到16:00开放
周六关闭
周日从8:00到13:00开放

我的脚本:

var d = new Date();
var dayOfWeek = d.getDay();
var hour = d.getHours();
var mins = d.getMinutes();
var status = 'open';
if (dayOfWeek !== 6 && dayOfWeek !== 0 && hour >= 9 && hour <= 15){
    if (hour=='9' && mins < '00'){
        status = 'closed';
    }else if (hour=='15' && mins > '30'){
        status = 'closed';
    }else{
        status = 'open';
    }
}else{
    status = 'closed';
}
if (status=='open') {
    $('.hours').show();
    $('.closed').hide();
}else{
    $('.hours').hide();
    $('.closed').show();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hours">We are OPEN</div>
<div class="closed">We are CLOSED</div>

使用二维数组

// Example days
var days = [[9, 15],[8, 14],[7, 13],[6,12],[5,11],[0,0],[0,0]];

每天使用[0,0]被视为完全关闭。并将IF语句编辑为

if (hour >= days[dayOfWeek][0] && hour < days[dayOfWeek][1]){ //..

您可以构造一个数组来表示一周中的每一天,并在其中包含开放/关闭时间。

另外,我会更改您的"状态"变量以存储布尔值,而不是字符串,因为它有效地回答了一个"是或否"问题 - 为什么不只是称其为"打开"并使其值为TRUE或FALSE?尼特·皮克(Nit Picky),但这种方式更正确。字符串比较很笨拙。

var openHours = [
    {
        openHour: 8,
        openMinute: 0,
        closeHour: 13,
        closeMinute: 0
    },
    {
        openHour: 9,
        openMinute: 0,
        closeHour: 17,
        closeMinute: 30,
    },
    {
        openHour: 9,
        openMinute: 0,
        closeHour: 17,
        closeMinute: 30,
    },
    {
        openHour: 9,
        openMinute: 0,
        closeHour: 17,
        closeMinute: 30,
    },
    {
        openHour: 9,
        openMinute: 0,
        closeHour: 17,
        closeMinute: 30,
    },
    {
        openHour: 9,
        openMinute: 0,
        closeHour: 17,
        closeMinute: 30,
    },
    {
        openHour: -1,
        openMinute: -1,
        closeHour: -1,
        closeMinute: -1,
    }
];
var d = new Date();
var dayOfWeek = d.getDay();
var hour = d.getHours();
var mins = d.getMinutes();
var open = true;
var todayHours = openHours[dayOfWeek];
if (hour >= todayHours.openHour && hour <= todayHours.closeHour) {
    if ((hour==todayHours.openHour && mins < todayHours.openMinute) || (hour==todayHours.closeHour && mins > todayHours.closeMinute)) {
        open = false;
    } else {
        open = true;
    }
} else {
    open = false;
}
if (open) {
    $('.hours').show();
    $('.closed').hide();
} else {
    $('.hours').hide();
    $('.closed').show();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hours">We are OPEN</div>
<div class="closed">We are CLOSED</div>

您可以将日程安排放在数组和jsut检查日子中,并检查当前时间是否在阵列中的开始时间和结束时间

最新更新