我有以下错误,请问有人可以解释datetime.datetime和datetime.date之间的区别吗?Python的日期时间操作
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'
我有以下错误,请问有人可以解释datetime.datetime和datetime.date之间的区别吗?Python的日期时间操作
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'datetime.date'
顾名思义,一个datetime
包括有关在日期和时间信息,而date
只是一个日期。这就是为什么减去两个日期时间是允许的并且返回timedelta
(两个时刻之间的时间差),但是减去datetime
和date
不是 - 因为date
是指一整天,所以不清楚你想要的那一天的哪一部分计算到的距离。
要修正错误,您必须指定您指向的日期中的哪个点。例如,要使其指向日期开始的午夜,请将dt - d
替换为dt - datetime.datetime(d.year, d.month, d.day)
。
date
只是日期(年,月,日),而datetime
还包括时间(年,月,日,时,分,秒,毫秒)。
您不能直接比较两者,因为您需要明确指定如何处理时间部分。你完全忽略了时间部分,还是选择了一些随意的时间与必要时(通常是午夜)进行比较?这种选择取决于哪种方法最适合您的情况,而且只有您可以确定。
更具体地说,您必须将date
升至datetime
,或将datetime
降级为date
。假定日期时间为dt
,日期为d
,后者更容易一些(通常更有意义 - 您可以拨打dt.date()
),但前者也不难(datetime.datetime(d.year, d.month, d.day)
)。
在您的代码中,它将看起来像dt.date() - d
或dt - datetime.datetime(d.year, d.month, d.day)
。
注意,这将返回一个datetime.timedelta
对象,这是另一个略有不同的动物 - 它不代表特定的时间点,只是两点之间的差异(即,您不能将其用作日期日期)。
这是哪一种语言? – 2013-04-08 17:58:31
对不起编辑,python,我从文档中获得了两个ojects的定义,但仍然在努力理解diff,这只是秒?我怎么能转换其中一个具有相同的格式? – matel 2013-04-08 18:00:40
输入'help(datetime.datetime)'和'help(datetime.date)' – jurgenreza 2013-04-08 18:04:44