2011-09-07 9 views
1

確定最近的日期時間,我需要在Python中生成四個datetime對象:如何產生未來日期時間的序列中Python和從組

"The next instance of 5:30AM EST" 
"The next instance of 8:30AM EST" 
"The next instance of 1:00PM EST" 
"The next instance of 5:30PM EST" 

然後我需要找到其中哪些是最接近當前日期/時間。

我希望我可以說我有一些開始代碼,但我不知道從哪一個開始。

回答

1

這應該讓你開始。我將當前時間作爲日期時間傳遞給函數,所以如果參數在EST中,這應該是正常的。

def find_next(cur_dt): 
    import datetime as dt 
    t = [dt.time(5,30), dt.time(8,30), dt.time(13,0), dt.time(17,30)] 

    cur_t = cur_dt.time() 
    cur_d = cur_dt.date() 

    for i in range(len(t)): 
     if t[i] > cur_t: 
      rt = [t[(j+i)%len(t)] for j in range(len(t))] 
      rd = [cur_d] * (len(t)-i) + [cur_d + dt.timedelta(days=1)]*i 
      return [dt.datetime.combine(rd[j],rt[j]) for j in range(len(rt))] 

    # everything happens tomorrow   
    return [dt.datetime.combine(cur_d + dt.timedelta(days=1), i) for i in t] 

結果將按順序從「最快」開始,依此類推。

+0

我從未見過的'[T [(J + I)%LEN(T)]在範圍Ĵ(LEN(t))的]'的東西,但它是在'包'或'技巧。 – Phil

+0

太棒了。這次真是萬分感謝。 –

0

這似乎可能是一個家庭作業問題。這是足夠的示例代碼,讓你開始?這可能不是最有效的,但它會起作用。

from datetime import datetime, time, timedelta 
now = datetime.now() 
today = datetime.date(now) 
tomorrow = today + timedelta(days=1) 

time_a = time (4, 0) 
today_a = datetime.combine(today, time_a) 
tomorrow_a = datetime.combine(tomorrow, time_a) 
if (today_a - now)>timedelta(0): 
    print "%s is in the future" % today_a 

if (tomorrow_a - now)>timedelta(0): 
    print "%s is in the future" % tomorrow_a 

有關的時間, 「T」 的列表,可以使用: T = [時間(5,30),時間(8,30),時間(13,0),時間(17, 30)] 現在= datetime.now()

today = [x for x in t if datetime.combine(today, x) > now] 
not_today = set(t) - set(today) 
+0

不是一個家庭作業問題。我已經失學了很長時間了(http://linkedin.com/in/nicksergeant) –

+0

最近有很多。也許我的過濾器有點過敏。 ;)。 。 。雖然我不會說「很長時間」5年。 (http://www.linkedin.com/in/CarlFischerIV) –

+0

他他。別擔心 :) –

相關問題