2016-04-23 114 views
0

我在我的内部网页上显示了每个部门的运行小时数。问题在于部门和用户遍布加拿大各地。我希望能够根据用户的计算机时间在div标签中显示每个部门的HoO。举个例子:Javascript运行时间计算机时区

付款东部08:00至17:00。 客户服务时间为07:00至16:00。 技术支持09:00至20:00太平洋地区。

如果从卡尔加里(山)用户进入页面,他们将看到:

开票时间为06:00至15:00 客户服务时间为07:00至16:00 技术服务10:00 21:00

但是如果温哥华的用户打开该页面,他们将根据其计算机的时区设置来查看小时。

此外,我希望能够在每个部门旁边放置另一个div,根据这些小时在“打开”和“关闭”之间进行更改。

我已经搜索了这个例子,但到目前为止,我只能找到一个脚本来显示打开/关闭的基础上设定小时。意思是,如果计算机时区是那个小时,那么它显示开放,HoO是否实际上是该区域。

我很欣赏这方面的任何信息。 Chester

+0

显示你的尝试。你的问题是可以理解的,但你没有表现出任何努力。你不能只列出你的要求,并期望我们提供一个完整的解决方案。 StackOverflow不是一个代码租用服务。 –

+0

对不起,马特。我完全忘了输入我的代码,但我想我已经明白了。 – Chester

回答

0

对不起人们,正如马特提到的,我忘记了在我使用的代码中,但我想我已经知道了。我意识到我应该使用getTimezoneoffset()来确定用户的PC时区,然后添加一些if语句来显示小时。下面是我使用的代码,我敢肯定有写了这一点,我不介意你的反馈,更清洁的方式:

var d new Date(); 
if (d.getDay() > 0 && d.getDay() < 6) { // Check if Monday to Friday 
    var openHour = 5; 
    var closeHour = 17; 
} 

var timezone = (d.getTimezoneoffset()/60 - 6)*(-1), //Turn time zone into an integer to add it to display time 
    ohours = d.getHours(d.setHours(openHour + timezone)).toString().length == 1 ? '0'+d.getHours() : d.getHours(), 
    chours = d.getHours(d.setHours(closeHour + timezone)).toString().length == 1 ? '0'+d.getHours() : d.getHours(), 
    oampm = d.getHours(d.setHours(openHour + timezone)) >= 12 ? 'pm' : 'am', 
    campm = d.getHours(d.setHours(openHour + timezone)) >= 12 ? 'pm' : 'am'; 

var display = "Currently Closed"; 

if (!(isNaN(openHour)) && !(ht < openHour || ht > closeHour)) { //If openHour is empty or between openHour and closeHour 
    display = 'Open today from '+ohours+':00 '+oampm+' to '+chours+':00 '+campm; 
} 

document.getElementById("dayWeek").innerHTML = days[(new Date).getDay()]; 
document.getElementById("para1").innerHTML = display; 

然后我用DIV ID显示两个元素:

<h1><span id="dayWeek"></span> Hours</h1> 
<div id="para1"></div> 

输出看起来是这样的(基于当前日期和时间),因为今天是星期天它关闭:

周日营业时间
目前关闭

+0

时区!=偏移量... –