蟒蛇不比较日期?



我有这个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

该值仅返回 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

timedelta.total_seconds()文档中:

返回持续时间中包含的总秒数。等效于在启用真除法的情况下计算(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6

请注意,launch_timecurrent_time 可能有不同的 UTC 偏移量,即,除非launch_time.tzinfopytz时区的实例(存储历史(过去/未来)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版本上,你可以按照Pieters的建议使用.total_seconds()@Martijn:

elapsed_minutes = elapsed.total_seconds() // 60

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

另请参阅查找日期时间之间是否经过了 24 小时 - Python。

相关内容

  • 没有找到相关文章

最新更新