繁体   English   中英

使用Javascript显示营业时间

[英]Using Javascript to Display Business Hours

我正在为大学图书馆开发一个新网站。 它将包括一个显示任意一天开放时间的功能。 许多库使用PHP和后端数据库或Google Calendar Integration的某种组合来做到这一点。 由于多种原因,我们无法做到这一点,所以我选择使用Javascript,因为它可以与我们的CMS(WordPress)一起使用,而无需打扰校园网站管理员。

我最初的方法是使用几个不同的文件,每个文件都有一个switch语句以显示基于星期几的小时数。 我们有3种类型的小时(常规,考试周和代祷),并且只有一个地点。 但是,必须交换文件会带来一定程度的人为错误。

因此,我决定使用一个文件。 最有意义的方法是获取日期,将其格式化为月/月中的星期数(第一,第二,第三等)/日期,然后使用一系列if ... else语句将当前日期与然后运行switch语句以选择一周中当前日期的正确时间。

问题是在第一个if语句中即使不成立,其条件仍然为true的条件。 谁能告诉我我做错了什么? 还是有更好的方法来完成此任务?

这是我的代码:

http://jsfiddle.net/mjcodelib/9aKmC/

var current = new Date();                           //creates new date object
var date = current.getDate();                       //gets date of month
var weekDay = current.getDay();                     //gets day of week 
var week_num = Math.floor((date - 1) / 7) + 1;      //determines the week in the month 
var month = current.getMonth() + 1;                 //gets month number
var date_formatted = month + '/' + week_num + '/' + weekDay;    
//puts date into    month/week number/date format
var date_month = month + '/' + date;

var date_test = new Date (2014, 11, 24);            //for troubleshooting

if (date_formatted >= '12/3/1') {                   //begin winter intercession     
    switch (weekDay)            {                   
        case 0:
            document.getElementById("hours").innerHTML="Closed Today";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to    4:30PM" + date_test;
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    } 
} else if (date_formatted >= '12/2/1') {            //begin fall exam week
        switch (weekDay)                {               
            case 0:
                document.getElementById("hours").innerHTML="Today's Hours: 2:00PM to 12:00PM";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 12:00AM";
                break;
            case 5:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
                break;
            case 6: 
                document.getElementById("hours").innerHTML="Closed Today";
                break;
    }
} else if (date_formatted >= '11/4/1') {        //begin Thanksgiving intercession
        switch (weekDay)            {                   
            case 0:
                document.getElementById("hours").innerHTML="Closed Today";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
                document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
                break;
            case 5:
                document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
                break;
            case 6: 
                document.getElementById("hours").innerHTML="Closed Today";
                break;
    } 
} else if (date_formatted >= '10/4/1') {        //resume regular hours after fall break
        switch (weekDay)    {                           
            case 0:
                document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
                break;
            case 5:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
                break;
            case 6: 
                document.getElementById("hours").innerHTML="Closed Today";
                break;
    }
} else if (date_formatted > '10/3/3') {         //Fall break
        switch (weekDay)            {                   
            case 0:
                document.getElementById("hours").innerHTML="Closed Today";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
                document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
                break;
            case 5:
                document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
                break;
            case 6: 
                document.getElementById("hours").innerHTML="Closed Today";
                break;
    } 
} else if (date_formatted == '10/3/3' ) {           //begin fall break
    document.getElementByID("hours").innerHTML="Today's Hours: 7:30 AM - 5:00PM";
} else if (date_formatted >= '8/3/1') {             //begin fall semester
    switch (weekDay)    {                           
        case 0:
            document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    }
} else if (date_month >= '8/1') {               //begin August intercession
    switch (weekDay)            {                   
        case 0:
            document.getElementById("hours").innerHTML="Closed Today";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    } 
} else if (date_formatted >= '6/1/1') {         //begin regular hours for summer    
    switch (weekDay)    {                           
        case 0:
            document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    }
} else if (date_formatted >= '5/2/1') {         //begin May intercession
    switch (weekDay)            {                   
        case 0:
            document.getElementById("hours").innerHTML="Closed Today";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    } 
} else if (date_formatted >= '5/1/1') {         //begin Spring exam week
        switch (weekDay)                {               
            case 0:
                document.getElementById("hours").innerHTML="Today's Hours: 2:00PM to 12:00PM";
                break;
            case 1:
            case 2:
            case 3:
            case 4:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 12:00AM";
                break;
            case 5:
                document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
                break;
            case 6: 
                document.getElementById("hours").innerHTML="Closed Today";
                break;
    }
} else if (date_formatted >= '3/3/1') {         //resume regular hours after Spring Break 
        switch (weekDay)    {                           
        case 0:
            document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    }
} else if (date_formatted >= '3/2/1') {         //begin Spring Break
    switch (weekDay)            {                   
        case 0:
            document.getElementById("hours").innerHTML="Closed Today";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:30PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    } 
} else if (date_formatted >= '1/2/1') {         //begin Spring semester
    switch (weekDay)    {                           
        case 0:
            document.getElementByID("hours").innerHTML="Today's Hours: 2:00PM to 10:00PM";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 10:00PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 7:30AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    }
} else if (date_formatted >= '1/1/4') {         //Winter intercession
    switch (weekDay)            {                   
        case 0:
            document.getElementById("hours").innerHTML="Closed Today";
            break;
        case 1:
        case 2:
        case 3:
        case 4:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to   4:30PM";
            break;
        case 5:
            document.getElementById("hours").innerHTML="Today's Hours: 8:00AM to 4:00PM";
            break;
        case 6: 
            document.getElementById("hours").innerHTML="Closed Today";
            break;
    } 
} else {
    document.getElementByID("hours").innerHTML="<a           href='http://www.deltastate.edu/academics/libraries/libraries-hours-of-operation/' target='_blank'>Click here for Library hours</a>";
}

注意,由于我很懒,并且不想弄清楚您month/week_num/weekDay字符串的日历日期,因此我只是实现了直接的数字比较,因此它不是最有效的(或最简单的)读书)

这是一个jsfiddle

我最终要做的几乎是更换每一个

if (date_formatted >= '##/#/#')

if (month >= ## && week_num >= # && weekDay >= #)

我还在jsfiddle中添加了一个div#hours,以便您可以实际查看具有不同测试日期的结果,并将document.getElementById("hours")转换为变量,以提高可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM