django将datetime很难输入数据库

时间:2013-07-19 18:54:32

标签: python mysql django

在我的Django App中,我有一个视图,即为我的任务模型向数据库提交数据。其中一个领域包括时间。每当我提交该数据然后将其读回我的应用程序时,它看起来是正确的(即我的索引页面包含所有对象的列表)。但是,当我查看数据库条目时,它们都会在我输入的内容后5小时内存储。令我困惑的是它们如何输入错误以及为什么它在我的索引中正确显示。我检查了我在哪里添加它如下。

hour = int(request.POST['time'][:2] #request.POST['time'] is formatted HH:MM AM
minute = int(request.POST['time'][3:5]
pmOffset = 0
if 'PM' in request.POST['time']:
    pmOffset = 12
print task.date
task.date = datetime.now().replace(hour=hour+pmOffset, minute=minute)
print task.date
#some other fields
print task.date
task.save()
print task.date

如果我说07:00 AM进入我的表单,那些打印语句会在早上7点出现,但是存储的任务中午有。任何人都知道为什么会发生这种情况?我完全不知所措。如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:2)

它按照设计的方式工作。默认情况下,MySQL stores the datetime objects in UTC

  

TIMESTAMP列的值从当前时区转换为UTC以进行存储,从UTC转换为当前时区以进行检索。

在您的django设置中,default timezone is America/Chicago比UTC落后5小时。因此结果