Как создать объект 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"