2010-03-04 8 views
1
t1 = datetime.time(12, 10, 0, tzinfo=GMT1()) # 12:10 
t2 = datetime.time(13, 13, 0, tzinfo=GMT1()) #13:13 
t3 = datetime.time(23, 55, 0, tzinfo=GMT1()) #23:55 
t4 = datetime.time(01, 10, 0, tzinfo=GMT1()) #01:10 

두 번 사이에 분 간격이 필요합니다. 예를 들어 작동하지 않는 경우 :python datetime.time 작업

def minute_interval(start,end): 
    return end - start 

minute_interval(t1,t2) #should give 63 mins. 

또한 종료 시간이 시작보다 작 으면 다음 날부터 끝까지 계산해야합니다. 예 :

minute_interval(t3,t4) #should give 75 mins. 

어떻게 달성 할 수 있습니까? 이 목적을 위해 minute_interval 함수를 다시 작성해야합니다.

+1

63 분이 아니라 73 분 73 – SilentGhost

답변

2

은 같은 시간대없이 DST에

import datetime 

def minute_interval(start, end): 
    reverse = False 
    if start > end: 
      start, end = end, start 
      reverse = True 

    delta = (end.hour - start.hour)*60 + end.minute - start.minute + (end.second - start.second)/60.0 
    if reverse: 
      delta = 24*60 - delta 
    return delta 

t1 = datetime.time(12, 10, 0) # 12:10 
t2 = datetime.time(13, 13, 0) #13:13 
t3 = datetime.time(23, 55, 0) #23:55 
t4 = end = datetime.time(01, 10, 0) #01:10 

print minute_interval(t1, t2) 
print minute_interval(t3, t4) 

출력 :

63 
75 

가, 그렇지 않으면 당신은 datetime.datetime를 사용하여 더 나은, 뺄셈을 지원하고 datetime.timedelta을 제공합니다 , 시간대에 pytz 라이브러리를 사용할 수 있습니다.

0
>>> import datetime 
>>> t1 = datetime.time(12, 10, 0) 
>>> t2 = datetime.time(13, 13, 0) 
>>> today = datetime.datetime.today() 
>>> t1n = datetime.datetime.combine(today, t1) 
>>> t2n = datetime.datetime.combine(today + datetime.timedelta(days=int(t2 < t1)), t2) 
>>> d = t2n - t1n 
>>> (d.days * 86400 + d.seconds) // 60 
63 
0

이것은 어떻습니까? 시간을 가정

def minute_interval(start,end): 
    start_sec= (start.hour*60+start.minute)*60+start.second 
    end_sec= (end.hour*60+end.minute)*60+end.second 
    return (end_sec-start_sec)/60.0