Получение текущей даты в определенном часовом поясе Джанго
Я хочу получить текущую дату для определенного часового пояса в моем приложении 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}}
при условии, что вы сохраняете выбор часового пояса пользователя в пользовательской модели.