2015-06-22 93 views
0

我需要检查在Python中以最近的HH:MM时间(以24小时格式)的秒数。例如,现在是10点 - 我需要在当天16点30分查看。 如果在18:00我需要检查剩下的时间到第二天16:30结束如​​此。剩下的秒数:MM

+1

请提供描述您的问题的最小工作代码片段以及您的解决方案。 –

+0

你能用Python的'datetime'来表示当前时间吗?你能用相同的方式表示时间16:30吗?少了什么东西? – dlask

回答

0

你可能想使用datetime模块,timeldelta是你的朋友在这里:

import datetime 

def cal_delta_to(hour, minute): 
    now = datetime.datetime.now() 
    target = datetime.datetime(*now.timetuple()[0:3], hour=16, minute=30) 

    if target < now: # if the target is before now, add one day 
     target += datetime.timedelta(days=1) 

    diff = now - target 
    return diff.seconds 
0

如果您的格式保证,你可以很容易地计算出一天秒:

def seconds_of_day(hhmm): 
    return int(hhmm[:2])*3600 + int(hhmm[3:])*60 

做完这个比较很简单:

t1 = seconds_of_day('16:30') 
t2 = seconds_of_day('10:00') 
#t2 = seconds_of_day('18:01') 
diff = 86400-t2+t1 if t1<t2 else t1-t2 
0

从简单的s TEPS。编程通常是将这些任务分解为几个步骤。

获取当前时间。下一个16:30。减去。

# use datetime 
from datetime import datetime, timedelta 

# get current time 
curr = datetime.now() 

# create object of nearest 16:30 
nearest = datetime(curr.year, curr.month, curr.day, 16, 30) 

# stupidly check if it's indeed the next nearest 
if nearest < curr: 
    nearest += timedelta(days=1) 

# get diff in seconds 
print (nearest - curr).seconds 
-1

使用日期时间

import datetime 

func = lambda s: datetime.datetime.strptime(s, '%H:%M') 
seconds = (func(s2)-func(s1)).seconds 

你总是可以得到你想要的东西,甚至在特殊“第二天”案件,就像下面案例1;

# case1: now is '09:30', check seconds left to the 09:29 next day 
>>> (func('09:29')-func('09:30')).seconds 
86340 

# case2: now is '09:30', check 10:30 the same day 
>>> (func('10:30')-func('09:30')).seconds 
3600 
+0

为什么降低投票率,请评论.... – LittleQ

相关问题