Я ищу лучший способ найти текущий день в диапазоне дней. Модель данных выглядит так:
... | day | open_time | close_time | ...
... | '2020-06-04 04:00:00' | '2020-06-04 13:12:00' | '2020-06-04 14:12:00' | ...
... | '2020-06-05 04:00:00' | '2020-06-04 13:12:00' | '2020-06-04 14:12:00' | ...
... | '2020-06-06 04:00:00' | '2020-06-04 13:12:00' | '2020-06-04 14:12:00' | ...
Эта таблица (checkin_time_range) в основном показывает дни и время открытия / закрытия места, которое может быть открыто, представьте, как учебный зал в колледже. Учебный зал открыт с 13-14 4 июня по 5 июня.
Студент может зарегистрироваться в этом месте 5 июня в 13:50, и поэтому, когда они регистрируются, мне нужно найти checkin_time_range_id, в котором они будут проверять. У меня есть следующий запрос:
checkin_time_range_id = (
CheckinTimeRange.query.filter(CheckinTimeRange.chk_checkin_id == checkin_obj.pk)
.filter(
CheckinTimeRange.day.between(
pendulum.today(), pendulum.tomorrow().subtract(seconds=1)
)
)
.with_entities(CheckinTimeRange.pk)
.first()
)
Идея здесь состоит в том, чтобы использовать вызов between, чтобы найти соответствующий день, когда студент пытается проверить.
Две проблемы с этим хотя: учащийся может отмечаться, например, в центральное время, но Checkin_time_range всегда сохраняется в UT C. Преобразование времени студентов в UT C работает, кроме случаев, когда приближается к полуночи. Когда он «переворачивается» после полуночи, вместо этого он находит следующий день, поэтому вместо этого вы конвертируете checkin_time_range в часовой пояс учащихся, но тогда у вас возникает та же проблема с откатом к полуночи предыдущих дней.
Глядя для наилучшего решения проблемы с часовым поясом или другого способа найти текущий день в диапазоне дней, в которые они регистрируются.