Показать сообщение отдельно
  #7 (permalink)  
Старый 22.04.2015, 18:02
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от laimas Посмотреть сообщение
Конечно в рабочее время, поэтому и важно знать смещение часового пояса клиента. Для этого его нужно передать серверу:
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. Если расчеты проводить на клиенте, то тогда с целью указать диапазон времени работы сервера по времени клиента, в котором клиент может выбрать время для ответного звонка.
Сложновато это для меня, я ведь php вообще не знаю. Тут нужно время пользователя в базу писать, бекэнд, чтобы можно было в админке посмотреть и позвонить. Лучше я на клиенте что-нибудь попроще запилю.
Ответить с цитированием