Python 不比较日期?

Python doesn't compare date?

我有这个launch_time:

2015-01-15 10:31:54+00:00

我得到current_time

current_time = datetime.datetime.now(launch_time.tzinfo)

我希望两个时间都相同,所以我使用了 tzinfo。所以,current_time的值为

2015-01-16 10:55:50.200571+00:00

我花 运行 时间来做这个:

running_time = (current_time - launch_time).seconds/60

值return只有23分钟。应该是一天+23分钟=1463分钟

谁能帮帮我。谢谢

您忽略了返回的 timedelta 对象的 .days 属性。使用 timedelta.total_seconds() 而不是将它们包含在一个值中:

running_time = (current_time - launch_time).total_seconds()/60

或者如果您想忽略增量的微秒部分,则明确使用它:

running_time = current_time - launch_time.total_seconds()
running_time = running_time.seconds / 60 + running_time.days / 1440

来自documentation for timedelta.total_seconds()

Return the total number of seconds contained in the duration. Equivalent to (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 computed with true division enabled.

注意,launch_timecurrent_time 可能有 不同的 UTC 偏移量,即除非 launch_time.tzinfopytz 的实例时区(存储历史(past/future)tz 数据)那么你的代码是错误的。首先将 launch_time 转换为 UTC:

from datetime import datetime

launch_time_in_utc = launch_time.replace(tzinfo=None) - launch_time.utcoffset()
elapsed = (datetime.utcnow() - launch_time_in_utc)

其中 elapsed 是自启动时间以来经过的时间,表示为 timedelta 对象。

要在 Python 3.2+ 中将 timedelta 对象转换为分钟:

from datetime import timedelta

elapsed_minutes = elapsed // timedelta(minutes=1)

在较旧的 Python 版本中,您可以将 .total_seconds() 用作 :

elapsed_minutes = elapsed.total_seconds() // 60

注意://使用整数除法。

另见,Find if 24 hrs have passed between datetimes - Python