0

__str__()我有一个模型,它在模型的方法中显示一个短字符串

def __str__(self):
    return "Scheduled at %s" % (self.date_time.strftime("%B %d %Y %I:%M %p"))
    #Output: <Task: Scheduled at September 30 2018 12:30 AM>
    # it should have been: <Task: Scheduled at September 29 2018 08:30 PM>

当我去Django admin时,我在标题中看到Task: Scheduled at September 30 2018 12:30 AM并且在输入中填充了正确的:20:30 TIME_ZONE: 00

设置.py

TIME_ZONE = 'Etc/GMT+4'

USE_I18N = False

USE_L10N = False

USE_TZ = True

他一直显示 UTC 时区的时间,但是我TIME_ZONE='Etc/GMT+4在我的设置中设置。

在我的情况下,我希望将时间数据作为 UTC 保存在数据库中并用 TIME_ZONE 显示它们Etc/GTM+4

4

1 回答 1

3

Django 在使用模板显示值时转换日期时间。如果要在任意代码块中进行转换,请使用localtime()帮助程序:

from django.utils.timezone import localtime

def __str__(self):
    return "Scheduled at %s" % localtime(self.date_time).strftime("%B %d %Y %I:%M %p")
于 2018-09-30T03:28:46.930 回答