Javascript营业时间计算机时区

时间:2016-04-23 15:56:21

标签: timezone

我的内部网页上有一个显示,显示每个部门的工作时间。问题是部门和用户遍布加拿大各地。我希望能够在div标签中根据用户的计算机时间显示每个部门的HoO。举个例子:

账单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。

我很感激有关此事的任何信息。 切斯特

1 个答案:

答案 0 :(得分:0)

对不起朋友们,正如Matt所说,我忘了输入我正在使用的代码,但我想我已经弄明白了。我意识到我应该使用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>

输出看起来像这样(基于当前日期和时间),因为它的周日已关闭:

周日时间
目前已关闭