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

时间:2011-05-30 17:01:05

标签: php jquery datetime time

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

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

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

P.S。 - 假设该公司在印度,其工作时间是上午9点到下午5点。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

使用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("<br />Current time in India: " + indiaDate.toString());

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

答案 1 :(得分:1)

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

通常在我运行的所有Web服务器上,我将服务器时间设置为UTC。当人们输入他们的小时时,要么让他们输入GMT,要么他们希望他们能够在当地时间输入小时数,请在页面上设置时区列表或组合框。您可以使用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);

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