2017-09-05 94 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") 

希望它能帮助!