import datetime import logging import zoneinfo from helpers.models import User campus_timdelta = { "Москва": 3, "Санкт-Петербург": 3, "Нижний Новгород": 3, "Пермь": 5 } def now(user: User): today = datetime.datetime.now() + datetime.timedelta(hours=campus_timdelta[user.campus]) return today def get_next_daily_notify_time(user: User) -> datetime.datetime: time_now = now(user) hours, minutes = map(int, user.daily_notify_time.split(":")) next_time = datetime.datetime( year=time_now.year, month=time_now.month, day=time_now.day, hour=hours, minute=minutes ) logging.info('now time is %s', time_now) logging.info('user wants to notify at %s %s', hours, minutes) if time_now.hour * 60 + time_now.minute > hours * 60 + minutes: logging.info('go to next day') next_time = next_time + datetime.timedelta(days=1) return next_time - datetime.timedelta(hours=campus_timdelta[user.campus])