将时间转换为浮点数
Converting time to a float
我编写了一个程序来计算我的工作时间,但最后,它 return 的值是一个时间。
EX:我从 11:45 工作到 4:30。
我的程序 returns 4:45 我想 return 4.75.
如何转换?
我正在使用以下代码:
import datetime as dt
from datetime import timedelta
start =(input("Enter start time: " ))
end =(input("Enter start time: " ))
start_dt = dt.datetime.strptime(start, '%H:%M')
end_dt = dt.datetime.strptime(end, '%H:%M')
time =(end_dt - start_dt)
if time.days < 0:
time=timedelta(days=0,seconds=time.seconds,microseconds=time.microseconds)
time= str(time)
time2=dt.datetime.strptime(time, '%H:%M:%S')
off_set=dt.datetime.strptime('12:00:00', '%H:%M:%S')
time= time2 - off_set
print (time)
如果您使用日期时间,小时和分钟方法应该可以满足您的需求
>>>a=datetime.datetime.now().time()
>>>a
datetime.time(21, 17, 35, 562000)
>>>a.hour+a.minute/60.0
21.283333333333335
如果您使用时间增量(如您的代码中的情况),您应该使用:
mytimedelta = atime - anothertime
secs=mytimedelta.seconds #timedelta has everything below the day level stored in seconds
minutes = ((secs/60)%60)/60.0
hours = secs/3600
print hours + minutes
如果你使用 datetime 那么我建议:
>> import datetime
>> a = datetime.datetime.now()
datetime.datetime(2020, 5, 16, 11, 13, 59, 543985)
>> (a - datetime.datetime.combine(a.date(), datetime.time())).total_seconds() / 3600
11.233206662499999
我编写了一个程序来计算我的工作时间,但最后,它 return 的值是一个时间。
EX:我从 11:45 工作到 4:30。 我的程序 returns 4:45 我想 return 4.75.
如何转换?
我正在使用以下代码:
import datetime as dt
from datetime import timedelta
start =(input("Enter start time: " ))
end =(input("Enter start time: " ))
start_dt = dt.datetime.strptime(start, '%H:%M')
end_dt = dt.datetime.strptime(end, '%H:%M')
time =(end_dt - start_dt)
if time.days < 0:
time=timedelta(days=0,seconds=time.seconds,microseconds=time.microseconds)
time= str(time)
time2=dt.datetime.strptime(time, '%H:%M:%S')
off_set=dt.datetime.strptime('12:00:00', '%H:%M:%S')
time= time2 - off_set
print (time)
如果您使用日期时间,小时和分钟方法应该可以满足您的需求
>>>a=datetime.datetime.now().time()
>>>a
datetime.time(21, 17, 35, 562000)
>>>a.hour+a.minute/60.0
21.283333333333335
如果您使用时间增量(如您的代码中的情况),您应该使用:
mytimedelta = atime - anothertime
secs=mytimedelta.seconds #timedelta has everything below the day level stored in seconds
minutes = ((secs/60)%60)/60.0
hours = secs/3600
print hours + minutes
如果你使用 datetime 那么我建议:
>> import datetime
>> a = datetime.datetime.now()
datetime.datetime(2020, 5, 16, 11, 13, 59, 543985)
>> (a - datetime.datetime.combine(a.date(), datetime.time())).total_seconds() / 3600
11.233206662499999