2017-10-31 4 views
1

나는 작업 한 시간을 계산하는 프로그램을 만들었지 만 결국에는 값을 시간으로 반환합니다.파이썬에서 시간을 float으로 변환하기

EX : 11시 45 분에서 4시 30 분까지 일했습니다. 내 프로그램에서 4:45를 반환합니다. 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) 
+0

이 형식으로 설정하려는 값이 여전히 명확하지 않습니다. 코드에서 n을 지정해야합니다. 반환하거나 아무것도 인쇄 – WNG

+0

FYI,이 줄'time.seconds/60'은 절대적으로 아무것도하지 않습니다. –

+6

질문을 파기하지 마십시오. 고맙습니다. –

답변

1

당신이 날짜를 사용하는 경우, 시간과 분 메소드를 사용하면 (같은 timedelta를 사용하는 경우

>>>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 
관련 문제