2017-09-05 152 views
5

我想知道如果insertion_date大於30天。這應該可以檢測到當前時間的分鐘和秒鐘。 insertion_date中的值將從API動態提取。找出日期是否超過30天

當前代碼只能檢測到一天,我需要的準確度可以達到第二。

import datetime 
import dateutil.parser 

insertion_date = dateutil.parser.parse('2017-08-30 14:25:30') 
right_now_30_days_ago = datetime.datetime.today() - datetime.timedelta(days=30) 

print right_now_30_days_ago #2017-08-31 12:18:40.040594 
print insertion_date #2017-08-30 14:25:30 

if insertion_date > right_now_30_days_ago: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
+0

根據文檔中,timedelta是*表示兩個日期,時間或日期時間實例之間的差異**至微秒級的持續時間***。 ,因此你有錯誤 –

+0

佛朗哥,我請你重新考慮你的接受。該用戶多次被抓到抄襲內容。我很確定這個答案也是以另一種方式從某種形式剽竊。點擊他們的個人資料,並看看。 –

回答

5

你需要做一些類似的路線:

from datetime import datetime, timedelta 
time_between_insertion = datetime.now() - insertion_date 

if time_between_insertion.days>30: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
3
from datetime import datetime, timedelta 

print(datetime.now()) 
datetime.datetime(2017, 9, 5, 7, 25, 37, 836117) 

print(datetime.now() - timedelta(days=30)) 
datetime.datetime(2017, 8, 6, 7, 25, 51, 723674) 

正如你可以在這裏看到,它是精確到秒。

問題出在datetime.today()。您應該使用datetime.now()而不是datetime.today()

time_since_insertion = datetime.now() - insertion_date 

if time_since_insertion.days > 30: 
    print("The insertion date is older than 30 days") 
else: 
    print("The insertion date is not older than 30 days") 

希望它能幫助!