在 Django 中更改时区感知对象的时区

Change timezone of timezone-aware object in django

我有一个时区感知对象:

date = timezone.now()

然后我使用一些中间件获取用户的时区,所以我将它作为一个字符串,例如:

tz = "America/New_York"

这可能是一个非常简单的问题,但我无法在任何地方找到答案:如何将日期对象的时区更改为用户的时区?我试过 date.localize(tz) 但这给了我一个错误。我做错了什么。

您需要将字符串转换为时区对象,然后使用 astimezone()

    import pytz
    timezone = pytz.timezone(tz)
    your_date_with_usertimezone = date.astimezone(timezone)