2017-06-30 41 views
-1

因此,我正在努力将营业时间添加到特定的网站。我发现这一点JS显示当前页面加载时的时间,并确定商店是否关闭。但是,我想将页面加载时捕获的时间更改为活动时钟。我希望有人能够协助。营业时间:显示当前时间和假期

当页面加载时,它显示页面加载的时间。即在12:30 PM访问网站,timeDiv显示12:30 PM。在12:31 PM,它仍然显示12:30 PM。

我想要的是一个活动时钟,以便在12:31 PM显示12:31 PM,并在此之后的每个时间间隔显示当前时间。

这里的链接到原来的笔:https://codepen.io/zeinab92/pen/xwWGWM

var now = new Date(); 
var weekday = new Array(7); 
weekday[0] = "Sunday"; 
weekday[1] = "Monday"; 
weekday[2] = "Tuesday"; 
weekday[3] = "Wednesday"; 
weekday[4] = "Thursday"; 
weekday[5] = "Friday"; 
weekday[6] = "Saturday"; 

var checkTime = function() { 
    var today = weekday[now.getDay()]; 
    var timeDiv = document.getElementById('timeDiv'); 
    var dayOfWeek = now.getDay(); 
    var hour = now.getHours(); 
    var minutes = now.getMinutes(); 

    //add AM or PM 
    var suffix = hour >= 12 ? "PM" : "AM"; 

    // add 0 to one digit minutes 
    if (minutes < 10) { 
    minutes = "0" + minutes; } 

    if ((dayOfWeek === 1 || dayOfWeek === 2 || dayOfWeek === 3 || dayOfWeek === 4 || dayOfWeek === 5) && hour >= 9 && hour === 17 && minutes <=29) { 
    hour = ((hour + 11) % 12 + 1); //i.e. show 1:15 instead of 13:15 
    timeDiv.innerHTML = 'it\'s ' + today + ' ' + hour + ':' + minutes + suffix + ' - we\'re open!'; 
    timeDiv.className = 'open'; 
    } 

    else if ((dayOfWeek === 6) && hour >= 8 && hour === 15 && minutes <= 59) { 
    hour = ((hour + 11) % 12 + 1); 
    timeDiv.innerHTML = '<p id="hour">it\'s ' + today + ' ' + hour + ':' + minutes + suffix + '</p> <p id="stat">we\'re open!</p>'; 
    timeDiv.className = 'open'; 
    } 

    else { 
    if (hour === 0 || hour > 12) { 
     hour = ((hour + 11) % 12 + 1); //i.e. show 1:15 instead of 13:15 
    } 
    timeDiv.innerHTML = '<p id="hour">It\'s ' + today + ' ' + hour + ':' + minutes + suffix + '</p><p id="stat">we\'re closed!</>'; 
    timeDiv.className = 'closed'; 
    } 
}; 

var currentDay = weekday[now.getDay()]; 
var currentDayID = "#" + currentDay; //gets todays weekday and turns it into id 
$(currentDayID).toggleClass("today"); /hightlights today in the view hours modal popup 

setInterval(checkTime, 1000); 
checkTime(); 

回答

0

有一个很流行的JavaScript库称为momentjs,它处理大量的日期/时间逻辑的很好。我建议你从那里开始。

此代码扩展了几乎相同的方式momentjs你需要把你的假期:

https://gist.github.com/jrhames/5200024

的基本逻辑是跟踪一个单独的自定义数组你的假期,然后创建一个功能将日期作为参数并对您的假期数组进行查找。

+0

谢谢,我来看看。我仍在努力修改它。问题是,在我调整checkTime()函数的每个实例中,时钟都消失了。 假期是一个奖金。我只是非常需要理解,当用户在页面上时钟处于活动状态。 再次感谢您的提示。 –

+0

我想你需要在你的问题中增加更多关于这个问题的细节才能得到一个很好的答案。 – Graham

+0

当页面加载时,它显示页面加载的时间。 即访问网站在12:30 PM,timeDiv显示12:30 PM。在12:31 PM,它仍然显示12:30 PM。 我想要的是一个活动时钟,以便在12:31 PM显示12:31 PM,并在此之后的每个时间间隔显示当前时间。 –