Лучший подход к поиску текущего дня за пределами диапазона в отношении преобразования в часовой пояс UT C - PullRequest
0 голосов
/ 10 июля 2020

Я ищу лучший способ найти текущий день в диапазоне дней. Модель данных выглядит так:

... |         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 в часовой пояс учащихся, но тогда у вас возникает та же проблема с откатом к полуночи предыдущих дней.

Глядя для наилучшего решения проблемы с часовым поясом или другого способа найти текущий день в диапазоне дней, в которые они регистрируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...