Показать сообщение отдельно
  #6 (permalink)  
Старый 22.04.2015, 15:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Конечно в рабочее время, поэтому и важно знать смещение часового пояса клиента. Для этого его нужно передать серверу:
Date.prototype.getTimezoneOffset()
//или
(new Date()).getTimezoneOffset()

На сервере опираясь на разницу смещений часовых поясов сервера и клиента можно вести расчет, например:
$z = -300; //смещение клиента в минутах 
$z = date('Z')/60 + $z; //разница смещений сервера и клиента в минутах
$i = DateInterval::createFromDateString(-$z . ' minute'); //по смещению задан интервал, заданный отрицательным значением - восточнее сервера интервал будет добавляться, западнее вычитаться
$date = new DateTime('now');
echo 'Текущее время сервера ' . $date->format('Y-m-d H:i') . '<br>';
$date->add($i);
echo 'Текущее время у клиента ' . $date->format('Y-m-d H:i');

Зная часы работы клиента, можно рассчитать крайние значения времени, которые относительно времени сервера для клиента будут находиться в диапазоне от 9 утра до 9 вечера. Соответственно и сервер будет знать по какому его локальному времени можно звонить клиенту.

PS. Если расчеты проводить на клиенте, то тогда с целью указать диапазон времени работы сервера по времени клиента, в котором клиент может выбрать время для ответного звонка.

Последний раз редактировалось laimas, 22.04.2015 в 15:57.
Ответить с цитированием