获得两次间隔

时间:2009-11-18 09:39:54

标签: python django datetime

用户将指定时间interval n 秒/分钟/小时,然后两次(start / stop)。

我需要能够执行此interval,然后逐步执行startstop次,以获取这些时间的列表。然后,我将通过table.objects.filter执行数据库查找,以便检索每次对应的数据。

我现在正在制作一些可笑的长算法,我很肯定有一种更简单的方法可以做到这一点。也就是说,更多 pythonic 方式。想法?

3 个答案:

答案 0 :(得分:4)

你正在寻找这样的东西吗? (伪代码)

t = start 
while t != stop: 
    t += interval 
    table.objects.filter(t) 

答案 1 :(得分:4)

它也非常适合作为发电机:

def timeseq(start,stop,interval):
    while start <= stop:
        yield start
        start += interval

用作:

for t in timeseq(start,stop,interval):
    table.objects.filter(t)

或:

data = [table.objects.filter(t) for t in timeseq(start,stop,interval)]

答案 2 :(得分:1)

怎么样......

result = RelevantModel.objects.filter(relavant_field__in=[
    start + interval * i 
    for i in xrange((start - end).seconds / interval.seconds)
]) 

......?

我无法想象这与你正在做的事情有很大不同,但也许它更紧凑(特别是如果你没有使用foo__in=[bar]或列表理解)。当然start和end是datetime.datetime对象,interval是datetime.timedelta对象。