2016-01-24 29 views
1

我想帶一個字符串將字符串轉換成datetime然後將其與datetime.now

"9:09am Jan 23" 

,並與datetime.now()比較獲得唯一的小時差量進行比較。

所以,如果我不喜歡的東西

now = datetime.datetime.now() 
if now - (string in hours) > 24: 
     return True 
    else: 
     return False 

我已經與它搞亂了一小會兒,並不能似乎比較成功的一個字符串(或轉換後的字符串對象)與datetime.now。

+0

您可以[字符串轉換爲datetime](HTTP,我可以刪帖: //stackoverflow.com/q/466345/2144390),然後[比較兩個日期時間值](http://stackoverflow.com/q/8142364/2144390)。 –

+0

我已經試過這一點,但不能似乎對它們進行比較。我會嘗試真正的快,並報告 – Ecko

+0

請[編輯]你的問題,以顯示你真正嘗試。 –

回答

2

您可以將字符串中結合使用strptimethe relevant format爲DateTime。你將需要添加本年度雖然:

import datetime 
now = datetime.datetime.now() 
year = now.year 
datestring = "9:09am Jan 23 " + year 
dt = datetime.datetime.strptime(datestring, "%H:%M%p %b %d %Y") 

減去兩個日期時間給你一個timedelta對象,所以你需要解壓的日子:

diff = now - dt 
days_diff = diff.days 
+0

這工作!只需要弄清楚如何得到小時,而不是幾天。 diff.seconds/3600有效。 – Ecko

0

這裏是一個函數,將抓住當前時間的兩個實例並以秒爲單位返回差異。這與日期時間的「strptime」,我在其中當前時間轉換爲字符串大多完成。如果你想拋棄當前的時間,更換「時間」或字符串「XVAR」變量。我在這裏用了幾秒鐘,但你可以輕鬆地返回幾小時的差異。

import datetime, sys 

def time_passed(): 
    while True: 
     inp = raw_input("Press [Y] to start, or [X] to exit.: ").lower() 
     if inp == 'y': 
      now = datetime.datetime.now() 
      xvar = now.strftime("%b %d %H:%M:%S") 
      time = datetime.datetime.strptime(xvar, "%b %d %H:%M:%S") 
      time = time.replace(year = 2016) 
      print "The first recording of the time is: {0}".format(time) 
      print "The second recording of the time is: {0}".format(now) 
      yvar = (now - time) 
      print "Between the two times, there is a difference of {0} seconds".format(yvar.total_seconds()) 
      continue 
     elif inp == 'x': 
      sys.exit() 
      break 
     else: 
      print "Command Error!" 
      continue  

if __name__ == '__main__': 
    time_passed() 
0

感謝您的幫助!我想要的只是如何比較幾小時,所以我做了一些黑客攻擊。我需要做的是讓

差異=現在 - DT

然後得到的時間,這是我被困在。解決的辦法是得到差異的秒數和除以3600.

我的解決方案:一個函數,它需要一個字符串時間和小時參數來確定要刪除的郵件。 (寫網絡自動化腳本)

def to_delete(self, date, accepted_range): 
    """ decides to delete a message based on certain criteria """ 
    now = datetime.datetime.now() 
    date_str = "%s %s" % (date, now.year) 
    dt = datetime.datetime.strptime(date_str, "%H:%M%p %b %d %Y") 
    diff = now - dt 

    if diff.seconds/3600 > accepted_range: 
     return True 
    else: 
     return False 

它給了我只有個小時,現在如果他們超過X小時老