如何在Django中为特定时区时间创建datetime对象

0 投票
1 回答
854 浏览
提问于 2025-04-19 17:06

我有一个时间点,想让用户在他们各自的时区到来的时候收到提醒。这个时间是以时间字段的形式存储的:

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

每个用户都有一个与之相关的时区。它的格式是这样的:

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

假设客户1和客户2都设置了在早上7点提醒。

我该如何根据每个用户的时区来表示早上7点呢?

1 个回答

2

我用的是这样的代码

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"

撰写回答