170 похожих чатов

Приветствую! Подскажите, как выйти из такой ситуации: 1) В базе есть

Регионы с указанием часового пояса каждого региона.
2) В регионе есть Филиалы (One to one)
3) В филиале есть Сеансы (One to one)
4) У каждого сеанса есть дата и времся $table->timestamp('datetime'), сохраняется в UTC

Мне нужно сделать выборку из базы всех сеансов, которые находятся в диапазоне от, допустим, 14 до 18 часов.
Тут заюзал такую конструкцию
if($times = Arr::get($filters, 'timerange')) {
$query->whereTime('datetime', '>=', Carbon::parse($times[0])->toTimeString());
$query->whereTime('datetime', '<=', Carbon::parse($times[1])->toTimeString());
}

НО! Я такой выборкой получаю сеансы без учетам часового пояса.
А мне нужно получить сеансы, которые попадают в выбранный диапазон времени по часовому поясу региона, где сеанс проводится.
Т.е. я не могу просто скорректировать время на какой-то один часовой пояс, мне нужно получит сеанс в 15 часов в Питере и сеанс в 15 часов в Кемеров, например.

Что вообще делать?

3 ответов

12 просмотров

так если ты хранишь в UTC то и ищи по UTC

В таблице регионов есть часовой пояс? Если нет,добавь и делай выборку сеансов with регионы

на ум приходит толькой такой ход: 1. выбрать нужные регионы. 2. найти в ргеионах мин макс по часовым поясам. мин часовой пояс перемножить с минимальным временем (которое "от") для получения timestamp. тоже для максимума. 3. выбрать все сеансы которые поподают в нужный фильтр. 4. проставить все связи от сеансов к регионам. 5. последняя фильтрация - проверяем попадают ли сеансы заданные часы согласно часовым поясам того региона к которому привязаны

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта