Как создать объект datetime для определенного времени в часовом поясе в django

У меня есть время, когда я хочу, чтобы пользователям напомнили, когда это время наступит в их часовом поясе. Хранится как поле времени:

reminder = models.TimeField(blank=True, null=True)

У меня есть часовой пояс, связанный с каждым пользователем. Это выглядит как:

customer1_timezone = customer1.time_zone #la timezone
customer2_timezone = customer2.time_zone #ny timezone

Допустим, для customer1 и customer2 напоминание установлено на 7 утра.

Как мне указать 7 утра для каждого пользователя относительно его тимзоны?

1 ответ

Я использую что-то вроде этого

def user_time(time_value, customer):
    tz = pytz.timezone(customer.time_zone)
    c_tz = pytz.timezone(settings.TIME_ZONE)
    d_tz = c_tz.normalize(c_tz.localize(time_value))
    return tz.normalize(d_tz.astimezone(tz))

Это даст время для клиента, тогда вам просто нужно проверить, что это 7 утра. Вы можете использовать strftime() даже для этого. user_time(datetime.now(), customer).strftime("%H") == "07"

Другие вопросы по тегам