Django的timezone.now()奇怪的行为

时间:2015-07-10 05:31:28

标签: python django timezone

我正在保存上次访问页面的时间,自从我升级到Django 1.8后,我的所有日​​期都变得很糟糕......我真的,真的不明白。

我基本上有一个API被美国各地的自助服务终端计算机拨打,但我想知道自助服务终端是否在最后3分钟内办理了登机手续。我不关心它在哪个时区。

我有一个简单的datetimefield:

lastcheckintime = models.DateTimeField(blank=True, null=True, auto_now=False)

当调用API时,我只是保存它:

monitor.lastcheckintime = timezone.now()

使用调试日志,看起来它正在数据库中保存正确的UTC时间。我正在检查一台显示器是否在线:

@property
def is_online(self):
    if self.lastcheckintime is None:
        return False

    time_threshold = timezone.now() - timedelta(minutes=3)
    return self.lastcheckintime > time_threshold

在我升级之前,它曾经是完美的。我不知道是不是将Django升级到1.8或pytz本身,但现在它看起来像这样:

Last 3 lines are wonky

(在我的时区是晚上10点29分)

奇怪的是,这些线条发生了变化!它并不总是在错误的时间显示相同的显示器。此外,整个事情已经过了7个小时(我是格林威治标准时间-7)。任何其他模型看起来都能正常工作,我完全不知道为什么这个模型表现不正常。

对我可能错过的事情有任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

仍然无法理解发生了什么,但我最终创建了另一个具有确切属性的datetimefield并使用了这个,删除旧的lastcheckintime并且一切正常。

这仍然是一个谜...... 谢谢!

相关问题