在Django中检索时区感知的DateTimeField
在我的模型中,我有一个在Django中检索时区感知的DateTimeField,django,pytz,Django,Pytz,在我的模型中,我有一个DateTimeFieldsay class ReturnEvent(models.Model): book_title = models.CharField() return_time = models.DateTimeField() 检索要打印的返回时间时,例如: return_event = ReturnEvent.objects.get(id=1) print(return_event.return_time.strftime("%H:%M")) 我看到
DateTimeField
say
class ReturnEvent(models.Model):
book_title = models.CharField()
return_time = models.DateTimeField()
检索要打印的返回时间时,例如:
return_event = ReturnEvent.objects.get(id=1)
print(return_event.return_time.strftime("%H:%M"))
我看到datetime不知道时间像:
2016-06-18 08:18:00+00:00
但是,我喜欢看到本地时间使用strftime
2016-06-1810:18:00+02:00
有没有快速的解决方案?如果您的设置中有USE_TZ=True
,Django会将数据库中的所有datetime对象存储为UTC
,并在模板中渲染时将其从settings.py
动态转换为您的时区=XYZ
这就是为什么从数据库中检索时,datetime
对象可以识别时区,但它的时区是UTC
(因此2016-06-18 08:18:00+00:00
中的+00:00
)。由于您正在将时间转换为自己的str
(而不是在模板中渲染),因此Django不会将其转换为您的时区设置。你需要自己把它转换成你想要的时区
如果要将其从时区设置转换为时区,可以执行以下操作
from django.utils import timezone
to_tz = timezone.get_default_timezone()
print return_event.return_time.astimezone(to_tz).strftime("%H:%M")
您是否在settings.py
中设置了USE_TZ=True
?