Получение текущей даты в определенном часовом поясе Джанго

Я хочу получить текущую дату для определенного часового пояса в моем приложении 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

Кажется, это работает, но работа с часовыми поясами кажется сложной, и мне интересно, может ли что-то пойти не так с этим подходом?

1 ответ

Решение

Выглядит хорошо, если вы хотите получить само значение. Поскольку печать даты / времени является аспектом представления, вы, возможно, не захотите делать это в коде представления, а в шаблоне, используя что-то вроде ниже:

{% загрузки tz%}

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

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

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