График работы

Главные вкладки

Аватар пользователя Babich Babich 14 октября 2018 в 12:55

Здравствуйте, уважаемые форумчане.
Есть задумка сделать "График работы" в блоке с помощью php кода, чтобы выдавалось как в 2gis.

График работы с пн-пт с 10:00 до 18:00. С учётом часового пояса GMT +6.

Если сейчас рабочее время, то будет написано: "Сегодня работаем до 18:00"
Если до закрытия меньше часа например сейчас 17:11, будет написано: "Закроемся через 49 минут"
Если сейчас с 18:00 до 23:59, будет написано "Закрыто, откроемся завтра в 10:00"
Если сейчас с 00 до 09:00, будет написано "Откроемся сегодня в 10:00"
Если с 09:01 до 09:59, будет написано "Откроемся через XX минут"
Если сегодня суббота, то будет написано, "Откроемся в понедельник в 10:00"
Если воскресенье, то "Откроемся завтра в 10:00"

Есть вот такой код, но в нём учтены не все условия.

<?php
 
date_default_timezone_set
("GMT+6"); // часовой пояс
 
$thetime date("H"); // 24-часовой формат 
 
if($thetime 00 AND $thetime 10) { echo "Сейчас не работаем. Откроемся сегодня в 10:00";}
elseif(
$thetime 10 AND $thetime 18) { echo "Сегодня работаем до 18:00";}
elseif(
$thetime 18 AND $thetime 00) { echo "Сейчас не работаем. Откроемся завтра в 10:00";}
?>

Комментарии

Аватар пользователя Orion76 Orion76 14 октября 2018 в 14:54

По-моему Вам нужно всего лишь 3 "временные" точки в формате unix timestamp.
1.Время открытия на текущую дату.
2.Время закрытия на текущую дату.
3.Время открытия на следующую рабочую дату.

Получается 3 диапазона, ограниченные этими "временными точками":
1. Сегодня, до открытия.
2. Между открытием и закрытием.
3. От закрытия до следующего открытия.

Берете текущее время ( timestamp), проверяете, в какой из диапазонов это время входит, и на основании этого диапазона
получаете необходимые данные простыми математическими действиями с timestamp-ами (сколько времени прошло с открытия, сколько осталось до закрытия, сколько осталось до открытия и т.п.) и выводите необходимое уведомление.

Аватар пользователя bumble bumble 14 октября 2018 в 15:44

DateTime курите лучше. Таймстемпы больше для указания даты-времени, а не для временных диапазонов (если нет намерения создавать календарь на каждый день).

Я бы сделал следующим образом:

  • админка, с возможностью указания времени открытия и закрытия - стандартная (будни), выходная и сокращенная (если нужно, напр. субботний режим), формат hh:mm
  • возможность установки корректирующего времени открытия / закрытия на текущий и / или на следующий дни
  • банальное сравнение текущего с установленным временем, со свичем на каждую необходимую вариацию сообщения
Аватар пользователя bumble bumble 14 октября 2018 в 15:54

Ну, да.
А еще, можно добавить настройки перерывов на обед...
Тут все от фантазии и задачи зависит.
Можно все.

Аватар пользователя Babich Babich 15 октября 2018 в 6:49

Я смотрел этот модуль, но как понял, в нём просто настраивается график полностью по дням и выводится в виде списка.
Пн - 10-18
Вт - 10-18
Ср - 10-18
Чт - 10-18
Пт - 10-18
Сб - Выходной
Вс - Выходной