Python - 计算两个 datetime.time 对象之间的差异

37

我有两个datetime.time对象,我想计算它们之间的小时差。例如:

a = datetime.time(22,00,00)
b = datetime.time(18,00,00)

我希望能够减去它们并得到值为4。

4个回答

56

要计算时间差,您需要将 datetime.time 对象转换为 datetime.datetime 对象。然后进行减法操作后你会得到一个 timedelta 对象。为了找出 timedelta 对象表示的小时数,您需要找出总秒数并将其除以 3600

# Create datetime objects for each time (a and b)
dateTimeA = datetime.datetime.combine(datetime.date.today(), a)
dateTimeB = datetime.datetime.combine(datetime.date.today(), b)
# Get the difference between datetimes (as timedelta)
dateTimeDifference = dateTimeA - dateTimeB
# Divide difference in seconds by number of seconds in hour (3600)  
dateTimeDifferenceInHours = dateTimeDifference.total_seconds() / 3600

14

这就是我所做的方式

a = '2200'
b = '1800'
time1 = datetime.strptime(a,"%H%M") # convert string to time
time2 = datetime.strptime(b,"%H%M") 
diff = time1 -time2
diff.total_seconds()/3600    # seconds to hour 

输出:4.0


3

我得到了这个问题的结果:

a='2017-10-10 21:25:13'

b='2017-10-02 10:56:33'

a=pd.to_datetime(a)

b=pd.to_datetime(b)

c.total_seconds()/3600

但是在串联电路中这样做行不通:
table1['new2']=table1['new'].total_seconds()/3600

0

顺便提一下,这可能会困扰更多找到这个问题的用户...

为了计算pandas列之间的差异,最好不要将时间作为datetime.time类型,而是应该使用numpy.timedelta64(自午夜以来的持续时间)。修复此问题的一种方法:

from datetime import datetime, date, time
for c in df.select_dtypes('object'):
    if isinstance(df[c][0], time):
        df[c] = df[c].apply(lambda t: datetime.combine(date.min, t) - datetime.min)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接