比较datetime对象python中的时间

nkn*_*knj 0 python django comparison datetime

我有一个奇怪的问题.

我正在运行一个django应用程序,在我的一个模型中,我有一个方法来比较用户给出的时间和模型db中存储的时间

因此,出于调试目的,我这样做.

print self.start
print start
print self.start.time < start.time

输出是:

2012-10-15 01:00:00+00:00
2012-10-22 01:01:00+00:00
False

这怎么可能?!?!?!

我在django shell和python cli中试过这个!两个都给我真实!具有相同的值.

多谢你们.

nne*_*neo 6

.time是一种方法,而不是财产.

>>> import datetime
>>> a = datetime.datetime(2012, 10, 15, 1, 0, 0)
>>> a.time
<built-in method time of datetime.datetime object at 0x10049f508>
>>> a.time()
datetime.time(1, 0)
Run Code Online (Sandbox Code Playgroud)

因此,正确的代码将是if self.start.time() < start.time().

  • 实际上,您也必须将括号放在CLI中.如果你在CLI中的`a.time <b.time`中得到了正确的结果,那将是一个侥幸.Python 2允许您"比较"方法对象,但结果基本上是任意的.Python 3禁止这些比较,因为它们没有任何意义. (2认同)