我似乎无法在 django 中使用时区。我在这里读过这个,但是当我尝试应用它时它不起作用。
我的模型
class Model(models.Model)
name = models.CharField(max_length=30)
date = models.DateTimeField()
我的看法是:
from django.utils.timezone import timezone
def view(request):
today = datetime.now().replace(tzinfo=utc)
model = Model.objects.filter(date__gte=today, date__lte=today + timedelta(days=2)
return render_to_response('template.html', {'models':model}, context_instance=RequestContext(request)
在我的 template.html
{%for model in models%}
{{model.date.hour}}:{{model.date.hour}} - {{model.name}}
{%endfor%}
我的设置文件
TIME_ZONE = 'Europe/Athens'
USE_TZ = True
USE_L10N = True
因此,当我读到 USE_TZ 是否为真时,日期时间会以 UTC 格式保存在数据库中,然后 django 在将它们呈现在表单中时以本地时间(根据 TIME_ZONE 变量)呈现它们。但是我的模板会呈现它们保存在数据库中的日期(意味着比当地时间晚了两个小时,例如我想要 18:30,它保存了 16:30,它显示 16:30)。我试过了
{%load tz%}
{%for model in models%}
{{model.date.hour|localtime}}:{{model.date.minute|localtime}} - {{model.name}}
{%endfor%}
没有什么。更准确地说,它根本没有显示任何日期,它是空白的。我试过了
{%load tz%}
{%for model in models%}
{%localtime on %}
{{model.date.hour}}:{{model.date.time}} - {{model.name}}
{%endlocaltime%}
{%endfor%}
但时间保持不变,没有任何修改。
问题是在我的模板中,我以类似的方式执行此操作
{{model.date}} - {{model.name}}
它以正确的时区显示日期(例如 14:30 变为 16:30),但不是 24 小时格式(我保存的格式)。有人可以帮我解决时区和django一劳永逸的问题吗