为什么存储在SQLITE3中的Django时间和时间存在时差

时间:2015-10-21 07:37:59

标签: python django sqlite

我有以下Django框架:

models.py

import django
from django.db import models
from datetime import datetime
from django.utils import timezone

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField(default=django.utils.timezone.now,blank=True)

现在在浏览器中它看起来像这样:

enter image description here

但是在sqlite3中它看起来像这样:

sqlite> select * from test_app_question;
8|Who is it?|2015-10-21 07:28:08

请注意时间07:28:0816:28:08的差异。不知何故,Django识别TIME_ZONE设置但不识别SQLITE3。我该如何解决这个问题?

settings.py 中,我有:

TIME_ZONE = 'Japan'  
USE_I18N = True  
USE_L10N = True
USE_TZ = True

1 个答案:

答案 0 :(得分:3)

来自django docs(第一行):

  

当启用对时区的支持时,Django将日期时间信息以UTC格式存储在数据库中,在内部使用时区感知日期时间对象,并将它们转换为模板和表单中最终用户的时区。

由于UTC和日本时间之间存在9小时的差异(日本的时间是UTC + 9),因此DB和模板的值之间存在差异。