繁体   English   中英

Javascript检查时间是否在8:30 am和6:30 pm之间

[英]Javascript check if the time is between 8:30am and 6:30pm

好的,标题怎么说。 我在服务器上执行此操作,因此可以使用一些PHP代码来获取服务器的时间。 问题在于这是一个没有精确的小时数的时间范围。 我应该使用嵌套的if语句吗?

var serverTimestampMillis = <?php print time() * 1000 ?>;
var checkInterval = 1000;

var checkTime = function () {
    serverTimestampMillis += checkInterval;

    var now = new Date(serverTimestampMillis);

    var timeDiv = document.getElementById('timeDiv');

    var messageDiv = document.getElementById('messageDiv');

    timeDiv.innerHTML = now.toString();


    var dayOfWeek = now.getDay(); // 0 = Sunday, 1 = Monday, ... 6 = Saturday

    var hour = now.getHours(); // 0 = 12am, 1 = 1am, ... 18 = 6pm
    var minutes = now.getMinutes();

    // check if it's Monday to Thursday between 8:30am and 6:30pm
    // this is where I don't know how to check 8:30
    if (dayOfWeek > 0 && dayOfWeek < 5 && hour > 8 && hour < 18) {
        messageDiv.innerHTML = 'Yes, we are open!';
        messageDiv.className='open';            
    }
    else {
        messageDiv.innerHTML = 'Sorry, we\'re closed!';
        messageDiv.className='closed';
    }
};

// check the time every 1000 milliseconds
setInterval(checkTime, checkInterval);
checkTime();

预先感谢您,对不起,菜鸟

使用辅助函数比较两个日期:

 function createDateTime(time) {
    var splitted = time.split(':');
    if (splitted.length != 2) return undefined;

    var date = new Date();
    date.setHours(parseInt(splitted[0], 10));
    date.setMinutes(parseInt(splitted[1], 10));
    date.setSeconds(0);
    return date;
}

var startDate = createDateTime("8:30");
var endDate = createDateTime("17:30");
var now = new Date();
var isBetween = startDate <= now && now <= endDate;

console.log(isBetween);

JSFIDDLE。

您可以按照您所说的那样嵌套语句(以使其更易于阅读),然后检查特定的极端情况(8:30-9和18:00-18:30)。

if (dayOfWeek > 0 && dayOfWeek < 5) {
    if ((hour > 8 && hour < 18) ||
        (hour == 8 && minutes >= 30) ||
        (hour == 18 && minutes <= 30)) {
         messageDiv.innerHTML = 'Yes, we are open!';
         messageDiv.className='open';  
    }
}

暂无
暂无

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

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