2017-03-22 54 views
0

爲了舉例,我定義了一個包含特定條形碼和日期時間的字典。在python中跟蹤多個已用時間

我想從當前字典中的時間減去當前時間,這對於一個工作,但我不知道如何我可以爲他們每個人。

所以我想要程序要做的是跟蹤時間,當時間到了0,然後超過時間,例如報警打開。但我想跟蹤字典中的所有內容。

這裏是我當前的代碼,現在我一直是很簡單的:

from datetime import * 
import time 

dict = {'619999': '2017-04-22 11:40:00', '0991626': '2017-05-20 11:40:00', '177797': '2017-06-15 11:40:00'} 


def check_elapsed_time(): 
    while True: 
     now = time.strftime('%Y-%m-%d %H:%M:%S') 
     current_time = datetime.strptime(now, '%Y-%m-%d %H:%M:%S') 

     component_max_time = datetime.strptime(dict['619999'], '%Y-%m-%d %H:%M:%S') 
     elapsed_time = component_max_time - current_time 
     time.sleep(1) 
     print(elapsed_time) 


check_elapsed_time() 

回答

1

你剛纔通過你的字典必須迭代和評估每個值。我還向你的代碼添加了一個檢查,如果你的一個字典條目已經達到,就會出現一個alamr。

from datetime import * 
import time 

dict = {'619999': '2017-04-22 11:40:00', '0991626': '2017-05-20 11:40:00', '177797': '2017-06-15 11:40:00', '177795': '2017-03-22 14:05:00'} 


def check_elapsed_time(): 
    while True: 
     now = time.strftime('%Y-%m-%d %H:%M:%S') 
     current_time = datetime.strptime(now, '%Y-%m-%d %H:%M:%S') 

     for key in dict: 
      component_max_time = datetime.strptime(dict[key], '%Y-%m-%d %H:%M:%S') 
      elapsed_time = component_max_time - current_time 
      print(key + " " + str(elapsed_time)) 
      if component_max_time == current_time: 
      print("ALARM!!!") 

     time.sleep(1) 



check_elapsed_time() 

編輯:添加一個測試用例到您的字典今天只是爲了測試

+0

這是我近似lwas ooking。非常感謝!這看起來比我想象的要簡單得多。 – stickfigure4

1

按我的理解,當在字典的時候一個達到零即當您的算法中應觸發事我們的時間等於字典中的某個時間。我建議你選擇「第一次達到零」,通過找到最小值並單獨跟蹤。 你可以做到這一點:

# This program works. 
    from datetime import * 
    import time 

    dict = {'619999': '2017-03-22 17:44:40', '0991626': '2017-05-20 11:40:00', '177797': '2017-06-15 11:40:00'} 

    def reaches_zero_first(): 
     times = dict.values() 
     first_zero = min(times) 
     return first_zero 

    def check_elapsed_time(min_time): 
     while True: 
      now = time.strftime('%Y-%m-%d %H:%M:%S') 
      current_time = datetime.strptime(now, '%Y-%m-%d %H:%M:%S') 

      component_max_time = datetime.strptime(min_time, '%Y-%m-%d %H:%M:%S') 
      elapsed_time = component_max_time - current_time 
      time.sleep(1) 
      print(elapsed_time) 
      if(elapsed_time.total_seconds() == 0.0): 
       print "Reached" 
       break 
       # TRIGGER SOMETHING HERE 

    first_to_zero = reaches_zero_first() 
    check_elapsed_time(first_to_zero) 
+0

我想連續檢查字典中的每個日期時間,如果任何一個時間到達零,必須發出警報,但未達到零的其他時間應持續計數,直至它們也達到零。 – stickfigure4

+0

好的。我以爲你想讓這個鬧鐘只發生一次。對不起這是我的錯。 –

+1

你不需要對不起,我很高興你想幫助!而且我知道我的英文不完美。 – stickfigure4