Сравните часовой пояс пользователя с часовым поясом офиса на сайте. - PullRequest
0 голосов
/ 30 мая 2011

Я работаю над проектом, в котором мне нужно ПОКАЗАТЬ посетителю сайта сообщение в области контактов, например:

Контактный номер: + 91-99-3241-5285 [You can call us now]

Сообщение выделено в строке выше, теперь мой вопрос, как сравнить часовой пояс пользователя с рабочим временем офиса компании.

PS - Предположим, что компания находится в Индии, и его рабочие часы с 9:00 до 17:00.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 30 мая 2011

Используйте 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 голос
/ 30 мая 2011

Ответы сразу под вашим вопросом верны.Не нужно знать часовой пояс клиента, чтобы рассчитать, находится ли текущее время в часах работы.Неважно, в настоящее время это 8:00 утра по тихоокеанскому региону США, 11:00 утра по восточному побережью США или 11:00 вечера в Маниле, Филиппины.Важно то, какое время это относится к рабочим часам, а не к клиенту.

Обычно на всех веб-серверах, которые я запускаю, я устанавливаю время сервера в формате UTC.Когда люди вводят свои часы, попросите их ввести его в GMT или, если вы хотите, чтобы они могли вводить часы по местному времени, укажите список часовых поясов или комбинированный список на странице.Вы можете использовать функцию PHP DateTimeZone :: listAbbreviations () .

Так, например, скажем, кто-то вводит, что его часы с 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);

Теперь вы можете использовать эти часывычислить, являются ли часы рабочими часами или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...