Python没有';我们不能比较日期吗?

Python没有';我们不能比较日期吗?,python,date,datetime,time,compare,Python,Date,Datetime,Time,Compare,我有这个发布时间: 2015-01-15 10:31:54+00:00 我现在有时间 current_time = datetime.datetime.now(launch_time.tzinfo) 我想这两个时间都是一样的,所以我用了tzinfo。因此,当前_时间的值为 2015-01-16 10:55:50.200571+00:00 我用这个来计算跑步时间: running_time = (current_time - launch_time).seconds/60 该值仅返回23分钟。

我有这个发布时间:

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

我现在有时间

current_time = datetime.datetime.now(launch_time.tzinfo)
我想这两个时间都是一样的,所以我用了tzinfo。因此,当前_时间的值为

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

我用这个来计算跑步时间:

running_time = (current_time - launch_time).seconds/60
该值仅返回23分钟。一天+23分钟=1463分钟

有人能帮我吗。谢谢

您正在忽略返回的
timedelta
对象的
.days
属性。改为使用将这些值包含在一个值中:

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
从:

返回持续时间中包含的总秒数。相当于启用真除法计算的
(td.微秒+(td.秒+td.天*24*3600)*10**6)/10**6

您正在忽略返回的
timedelta
对象的
.days
属性。改为使用将这些值包含在一个值中:

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
从:

返回持续时间中包含的总秒数。相当于启用真除法计算的
(td.微秒+(td.秒+td.天*24*3600)*10**6)/10**6


请注意,
launch\u time
current\u time
可能具有不同的UTC偏移量,即除非
launch\u time.tzinfo
pytz
时区(存储历史(过去/未来)tz数据)的实例,否则您的代码是错误的。先将启动时间转换为UTC时间:

from datetime import datetime

launch_time_in_utc = launch_time.replace(tzinfo=None) - launch_time.utcoffset()
elapsed = (datetime.utcnow() - launch_time_in_utc)
其中,
appead
是自启动时间以来经过的时间,表示为
timedelta
对象

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

from datetime import timedelta

elapsed_minutes = elapsed // timedelta(minutes=1)
在较旧的Python版本上,您可以使用
.total_seconds()
作为:

注意:
/
使用整数除法


另请参见。

注意,
启动时间
当前时间
可能具有不同的UTC偏移量,即,除非
启动时间。tzinfo
pytz
时区(存储历史(过去/未来)tz数据)的实例,否则您的代码是错误的。先将启动时间转换为UTC时间:

from datetime import datetime

launch_time_in_utc = launch_time.replace(tzinfo=None) - launch_time.utcoffset()
elapsed = (datetime.utcnow() - launch_time_in_utc)
其中,
appead
是自启动时间以来经过的时间,表示为
timedelta
对象

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

from datetime import timedelta

elapsed_minutes = elapsed // timedelta(minutes=1)
在较旧的Python版本上,您可以使用
.total_seconds()
作为:

注意:
/
使用整数除法

另见