python中时间对象之间的差异?

python中时间对象之间的差异?,python,django,datetime,Python,Django,Datetime,这两种说法的区别是什么: import datetime print datetime.datetime.now() datetime.datetime(2015,1,28,12,32,9762118) datetime.time(12,33,3693084) 实际上,我想将django模型的时间域与当天少1小时的时间进行比较。我的代码片段与此相同: Mymodel.objects.filter( follow_up_date=datetime.datetime.now

这两种说法的区别是什么:

import datetime
print datetime.datetime.now()
datetime.datetime(2015,1,28,12,32,9762118)

datetime.time(12,33,3693084)

实际上,我想将django模型的时间域与当天少1小时的时间进行比较。我的代码片段与此相同:

Mymodel.objects.filter(
            follow_up_date=datetime.datetime.now().date,
            # commented now  
            # preferred_time__lt=(
            #     datetime.datetime.now() - datetime.timedelta(hours=1)),
            preferred_time__lt=(datetime.time(datetime.now()) - datetime.timedelta(hours=1)),
            )
Mymodel:

class Mymodel(models.Model):
  follow_up_date = models.DateField("Follow up Date",null=True,blank=True)
  preferred_time = models.TimeField(_("Preferred time"),default=now,
                                      null=True,blank=True)
我正在尝试提取当天计划的所有实例,它们的首选时间只经过了1小时。哪一个应该是“首选时间”的正确过滤器?我对注释的代码得到了错误的结果。我不清楚

这是一个cron作业,即在django中每1小时运行一次管理命令

  • 给定日期和时间信息的datetime.now()
  • datetime.time()只提供时间信息
  • e、 g

    首先:

    datetime.datetime(2015, 1, 28, 12, 32, 9, 762118)
    
    您有一个datetime对象。它有日期(前三个数字)和时间(后四个数字)

    你提到的第二件事:

    datetime.time(12, 33, 3, 693084)
    
    这只是时间部分

    要比较
    时间字段
    ,只需要时间组件;对于
    日期字段
    ,只需日期组件

    在代码中,您有以下
    datetime.datetime.now().date
    这只是内置函数
    date
    的名称。你需要称之为:

    >>> datetime.datetime.now().date
    <built-in method date of datetime.datetime object at 0xb74ac9b0>
    >>> datetime.datetime.now().date()
    datetime.date(2015, 1, 28)
    
    最后,您的过滤器将如下所示:

    filter_date = datetime.datetime.now().date()
    filter_time = (datetime.datetime.now() - datetime.timedelta(hours=1)).time()
    
    Mymodel.objects.filter(follow_up_date=filter_date,
                           preferred_time__lt=filter_time)
    

    有三种不同的类型:
    datetime。date
    对应于日历日期,因此您可以存储年、月和月的哪一天<代码>日期时间。时间是一天的时间,包括小时、分钟、秒和微秒。和
    datetime.datetime
    将两者结合在一起,并为您提供实际日历日期的时间。注意:
    datetime.time(datetime.now())
    是正确调用
    datetime.now().time()
    的另一种拼写。请不要删除表示本地时间的原始日期时间对象。操作数可能具有不同的UTC偏移量,例如,在DST转换的对侧--它可能会产生错误的结果(通常为一小时)。请参阅中的说明,您确定
    datetime.time(datetime.now())
    ?我得到
    类型错误:需要一个整数
    @J.F.SebastianI,我确定。完全按照问题和我的评论中显示的方式运行代码。思考为什么方法中的第一个参数在Python中被称为
    self
    >>> datetime.datetime.now().date
    <built-in method date of datetime.datetime object at 0xb74ac9b0>
    >>> datetime.datetime.now().date()
    datetime.date(2015, 1, 28)
    
    >>> (datetime.datetime.now() - datetime.timedelta(hours=1)).time()
    datetime.time(9, 27, 16, 93746)
    
    filter_date = datetime.datetime.now().date()
    filter_time = (datetime.datetime.now() - datetime.timedelta(hours=1)).time()
    
    Mymodel.objects.filter(follow_up_date=filter_date,
                           preferred_time__lt=filter_time)