获取特定时区的当前日期django

Getting the current date in a particular timezone django

我想在我的 Django 应用程序中获取特定时区的当前日期,而不考虑服务器的时区。我将用户的时区保存在数据库中。然后我将在以下函数中使用它:

def current_date(zone):
    utc = timezone.now()
    tz = pytz.timezone(zone)
    return utc.astimezone(tz).date()

print(current_date('Pacific/Auckland')) #prints 2016-05-30
print(current_date('Africa/Accra')) #prints 2016-05-29

它似乎可行,但使用时区似乎很复杂,我想知道这种方法是否会出错?

看起来不错,只要获得视图中的值本身就是您想要的。由于 date/time 打印是演示的一个方面,您可能不想在视图代码中执行此操作,而是在模板中使用如下内容:

{% 负载 tz %}

{{ object.datetime_field|时区:request.user.timezone }}

假设您将用户的时区选择存储在用户模型中。