Я работаю над проектом, где мне нужно ПОКАЗАТЬ посетителю веб-сайта сообщение в области контактов, например:
Контактный номер: + 91-99-3241-5285 [You can call us now]
Сообщение выделено в приведенной выше строке, теперь мой вопрос заключается в том, как сравнить часовой пояс пользователя с рабочим временем работы офиса компании.
PS – Предположим, что компания находится в Индии, а ее рабочее время – с 9:00 до 17:00.
Какие-либо предложения?
Используйте 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/
Ответы сразу под вашим вопросом верны. Не нужно знать часовой пояс клиента, чтобы рассчитать, находится ли текущее время в течение нескольких часов после его работы. На самом деле не имеет значения, находится ли он в настоящее время в 8:00 утра по Тихоокеанскому региону, в 11:00 по восточному востоку от США или в 11:00 в Маниле, Филиппины. Важно то, что это время относительно деловых часов, а не по отношению к клиенту.
Как правило, на всех веб-серверах, которые я запускаю, я устанавливаю время сервера на UTC. Когда люди вступают в свое время, либо введите их в GMT, либо, если вы хотите, чтобы они могли вводить часы в свое местное время, на странице есть список часовых поясов или поле со списком. Вы можете использовать функцию DateTimeZone :: listAbbreviations () PHP, чтобы помочь.
Так, например, скажем, кто-то входит, что их часы с 9:00 до 17: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);
Теперь вы можете использовать эти часы для расчета того, находятся ли часы в рабочее время или нет.