输入文件"clockTimes2020-40.xlsx“是CSV。时间在列里。我想要计算时差"dur",作为浮动的小时数,但是我得到了指示的错误消息。
import pandas
import datetime
print('pandas.__version__:',pandas.__version__)
df = pandas.read_excel('clockTimes2020-40.xlsx', sheet_name='clockTimes2020-40')
line0 = df.loc[0]
print('line0: ',line0)
print('line0 type is ',type(line0))
beg = line0[4]
end = line0[5]
print('beg = ',beg, 'type: ',type(beg))
print('end = ',end, 'type: ',type(end))
dur = end - beg
print('dur = ',dur,'type:',type(dur))
结果runfile(‘C:/Users/Muir/ABCorp/untled0.py’),pandas.version:1.1.3 line0: CID 1 Lname Adams Fname Francis J Mon 2020-09-28 00:00:00 Moin 08:00:10 Moout 17:16:24 2020-09-29 00:00 Tuin07:58:41 Tuout 16:55 Wed 2020-09-30 00:00 Wein 07:53:00 Weout 17:45:45清华2020-10-01 :00:00瘦07:53:00 Thout 17:45 Fri 2020-10-02 00:00 Frin 07:53下午16:59:45星期六2020-10-03 00 :00 Sain 00:00 Sain 00:00:00 Sun 2020-10-04 00:00 Suin 00:00 Suout 00:00:00 :00dtype: object line0类型是乞求= 08:00:10类型:结束= 17:16:24类型:回溯(最近一次调用):文件“C:\Users\Muir\ABCorp\untled0.py”,第21行,在dur =- TypeError:-:'datetime.time‘和'datetime.time’的不受支持的操作数(S)中
发布于 2020-11-23 13:19:22
Python - Calculate the difference between two datetime.time objects
要计算差异,必须将datetime.time对象转换为datetime.datetime对象。然后,当你减去,你得到一个时间三角洲对象。为了找出时间增量对象有多少小时,您必须找到总秒,并将其除以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
发布于 2020-11-23 13:54:42
#编辑解决了
dur=((end.hour*3600 + end.minute *60 + end.second ) - ( beg.hour*3600 + beg.minute *60 + beg.second )) /3600.
否则,您可以将将 "TIME“转换为字符串,将其转换为datetime类型。
然后,您可以使用total_seconds()/3600.在浮动小时中获取“时间”。
请看下面的示例:
from datetime import datetime
beg = '08:00:10'
end = '17:16:24'
dur = datetime.strptime(end, '%H:%M:%S') - datetime.strptime(beg, '%H:%M:%S')
result = dur.total_seconds()/3600
print(result)
https://stackoverflow.com/questions/64976381
复制相似问题