将用户的时区与网站的办公地点时区进行比较

我正在开展一个项目,我需要在联系人区域显示网站访问者的信息,例如:

联系[You can call us now] :+ 91-99-3241-5285 [You can call us now]

在上面的行中突出显示了该消息,现在我的问题是,如何将用户的时区与公司办公室的工作时间进行比较。

PS – 假设公司在印度,其工作时间是上午9点到下午5点。

有什么建议?

使用javascript确定用户时区偏移量:

http://www.w3schools.com/jsref/jsref_gettimezoneoffset.asp

 var d = new Date() var gmtHours = -d.getTimezoneOffset()/60; document.write("The local time zone is: GMT " + gmtHours); 

然后计算例如印度的当前时间(GMT + 5:30,如果我没有错),如果结果时间在工作时间内,则显示“你现在可以给我们打电话”。

 var diff = gmtHours - 5.5; // -> difference between users timezone and india in hours var indiaDate = new Date(); indiaDate.setTime(d.getTime() - (diff * 60 * 60 * 1000)); document.write("
Current time in India: " + indiaDate.toString());

请参阅以下工作演示: http : //jsfiddle.net/roberkules/RLsw9/

您问题正下方的回复是正确的。 应该不需要知道客户的时区来计算当前时间是否在运行的几小时内。 无论目前是美国太平洋时间上午8:00,美国东部时间上午11:00还是晚上11:00,菲律宾马尼拉都没关系。 重要的是它与营业时间相关的时间,而不是与客户相关的时间。

通常在我运行的所有Web服务器上,我将服务器时间设置为UTC。 当人们输入他们的小时时,要么让他们输入GMT,要么他们希望他们能够在当地时间输入小时,请在页面上设置时区列表或combobox。 您可以使用PHP的DateTimeZone :: listAbbreviations()函数来提供帮助。

因此,例如,有人说他们的工作时间是亚洲/加尔各答时区的上午9:00到下午5:00。 当您使用时间进行计算时,请执行以下操作,假设您的行名为hrs_starthrs_endhrs_tz

 $hrs_tz = new DateTimeZone($row['hrs_tz']); $hrs_start = new DateTime($row['hrs_start'], $hrs_tz); $hrs_end = new DateTime($row['hrs_end'], $hrs_tz); 

现在,您可以使用这些时间来计算营业时间是否在营业时间内。