ребят доброго времени суток. Так и не смог найти пример реализации режима работы как на Facebook. Суть в том, допустим я заношу в бд режим начала работы заведения и во сколько оно закрывается. На выходе хочу получить что-то типа этого. С 09:00 до 18:00 Сейчас работает За час до закрытия выводим, С 09:00 до 18:00 Закроется через час Если время не рабочее, то С 09:00 до 18:00 Сейчас закрыто За час до открытия, С 09:00 до 18:00 Откроется сегодня в 09:00
Я понимаю что нужно делать условие, но как это реализовать С этим у меня все хорошо, их всего приведенного меня больше интересует как высчитывать время до открытия заведения
Все очевидно. Если текущее время больше чем время закрытия, но не более чем на час то пишем что закрылось час назад, то же самое с открытием остальное не работает
Если все как написано в первом посте)) без учета минут, то проще всего вот так вот наверно) PHP: $now = date("H"); for($n = 0; $n < 25; $n++){ getWorkStatus($n); } function getWorkStatus($now){ $t1 = 9; $t2 = 18; echo 'Сейчас ' . $now . ':00 - '; if ( ($now + 1) >= $t2 && $now < $t2 ) { echo 'Закроется меньше чем через час<br />'; } elseif( $now >= $t1 && $now < ($t2 - 1) ){ echo 'Сейчас работает<br />'; } elseif ( $now >= ($t1 - 1) && $now <= $t1 ) { echo 'Откроется сегодня в 09:00<br />'; } elseif ( $now >= $t2 || $now <= $t1) { echo 'Сейчас закрыто<br />'; } }
Заметил такое, если допустим проставить режим работы с 08:00 и до 01:00, то пишет что организация не работает. Есть еще вопрос, допустим если я ставлю режим работы с 08:00 до 08:00 то нужно вывести что работает круглосуточно. Сравнивал первое и второе время, результата нет.
ну как было поставлено условие так я и привел пример)) вопрос в том что задача была поставлена неверно)) нельзя писать закроется через час если до закрытия осталась одна минута)) тут надо не с числами работать, а сравнивать периоды времени и писать в минутах сколько осталось.. .
Ну это я сделал, пишется в минутах сколько осталось до закрытия. Единственное не могу понять по выше заданному мною вопросу
в самом начала поставить условие если t1 = t2 то работает круглосуточно.. ну мы сравниваем в данном примере не время, а числа.. и 1 заведомо меньше 8... как вариант поставить в самом вверху отдельное условие если t1меньше t2 до добавить 12... но это костыль и не красиво)) мне кажется лучше бы делать сравнение дат где уже будет видно где сегодня а где завтра..
Код (Text): elseif ( $t1 = $t2 ) { не сработало, условие другое выбирается, пишет мол закрыто. Хотя и тут все прописано. А про сравнение дат можно поподробнее? может где пример можно посмотреть
вот класс даты и времени https://php.ru/manual/class.datetime.html куча примеров в инете как он работает.. я пару раз что то делал на нем.. вроде удобно.
Не получается у меня понять. Суть вот в чем, даты я вообще нигде не использую. Можно конечно подставлять сегодняшний день и к нему плюсовать +1 день если время до скольки работает более 00:00 часов. Но вот загвоздка в том как это лучше реализовать...
Возможно Вам проще тогда будет заполнять не время работы с-по, а со скольки и как долго? Например, работаем с 17. Работаем 8 часов. Это означает 17..17+8 17..25 17..25%24 17..1 17:00..01:00 Текущий статус проверяете заданным числом. Находится ли оно любо оно+24 в диапазоне 17..25 Например для 0, 20, 23, 1 прлверяете Входит ли 0 или 0+24(24) в диапазон 17..25 Входит ли 20 или 20+24(44) в дипазон 17..25 Входит ли 23 или 23+24(47) в дипазон 17..25 Входит ли 1 или 1+24(25) в дипазон 17..25
Что то совсем голова едет. Получается варианта нет высчитывать именно по времени которое изначально у меня указано? 10:00 - 02:00 что бы после полуночи считало что наступили новые сутки и 02:00 не было меньше чем 10:00
Можно. При проверке добавляйте к времени закрытия +24 часа, если оно меньше времени открытия. И проверяйте тогда также два числа по одному заданному. Само число и число+24
Спасибо, с этим ясно. А как быть если время открытия добустим 08:00 и закрытия 08:00 нужно как то вычислить что тут уже круглосуточная работа