我希望在Django数据库中创建记录时自动记录当前时间。
在我的模型中,我正在使用:
dateTime = models.DateTimeField(auto_now_add=True)
据我了解,考虑到正确的时区,这会自动标记时间。 但是,它输出的时间比我的本地时间早5小时。
因此,为了尝试调试它,我在视图中运行了此函数并打印了输出:
from django.utils import timezone
timeNow = timezone.localtime(timezone.now())
timeNow将输出正确的时间。
所以我将模型更改为:
def get_time():
return timezone.localtime(timezone.now())
dateTime = models.DateTimeField(default = get_time)
这仍然会导致相同的错误时间戳。
我还更改了我的settings.py
中的时区LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Canada/Central'
USE_I18N = True
USE_L10N = True
USE_TZ = True
有什么想法我想念的吗?
答案 0 :(得分:2)
据我了解,考虑到正确的时区,这会自动标记时间。
那是个误会。参见timezone documentation的第一句话:
启用时区支持后, Django将日期时间信息存储在数据库中的UTC中,在内部使用可识别时区的datetime对象,并将其转换为模板中最终用户的时区。表格。
如您所见,可以将UTC日期时间转换为您想要显示的内容,等等。
答案 1 :(得分:0)
**在模型导入日期时间
在settings.py中将USE_TZ更改为False **
LANGUAGE_CODE ='en-us'
TIME_ZONE ='UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = False
答案 2 :(得分:-1)
在settings.py文件中
保持USE_TZ值为False
USE_TZ = False
这对我有用。