Django DateTimeField与datetime.now()进行比较

时间:2012-08-01 15:31:37

标签: python django

我有DateTimeField

class Assignment (models.Model):
   official_deadline = models.DateTimeField(null=True, blank=True)

我需要将它与当前日期时间进行比较,我尝试过:

def official_deadline_past(self):
    if datetime.datetime.today() > self.official_deadline:
        return True
    return False

但它始终返回False我也尝试过:

def official_deadline_past(self):
    if datetime.datetime.now() > self.official_deadline:
        return True
    return False

但我有同样的问题。

我在字段中有一个信息:2011-07-02 00:00:00例如以ModelForm生成的格式

2 个答案:

答案 0 :(得分:0)

我在python 2.7.3和django 1.3.1下比较DateTimeField与datetime有类似的问题

我认为DateTimeField当时没有很好的时区支持,或者我没有正确配置它。

每当我为datetime字段指定时区时,我对DateTimeField>的所有比较都是如此。日期时间会失败。

datetime使用本地中心时间,而DateTimeField输入为east。

我最后只是将一个愚蠢的黑客加入到日期时间中心对象中添加timedelta(hours = 1)以将其“转换”为东部。

答案 1 :(得分:0)

我有同样的问题,Django模型的Datetime字段只包含日期(没有时间)

now = datetime.datetime.now()

q1=Q()
q1.children.append(Q(datetimefieldFrom__lte=now))
q1.children.append(Q(datetimefieldTo__gte=now))

例如 现在:“ 2020-12-11 17:17:58.000000” datetimeFrom:“ 2020-12-11 16:17:58.000000” datetimeFrom:“ 2020-12-11 18:17:58.000000”

它只是通过“ 2020-12-11 00:00:00.000000”进行比较

@johnjamesmiller,您的时区问题可以通过修改设置来解决。py

TIME_ZONE = 'Asia/Hong_Kong'

USE_TZ = True