我正在开展一个项目,我需要在联系人区域显示网站访问者的信息,如:
联系电话:+ 91-99-3241-5285 [You can call us now]
上面的行突出显示了该消息,现在我的问题是,如何将用户的时区与公司办公室的工作时间进行比较。
P.S。 - 假设该公司在印度,其工作时间是上午9点到下午5点。
有什么建议吗?
答案 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_start
,hrs_end
和hrs_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);
现在,您可以使用这些时间来计算营业时间是否在营业时间内。