Python 找出日期是否超过30天

Python 找出日期是否超过30天,python,datetime,Python,Datetime,我想知道插入日期是否早于30天。这将检测到当前时间的分每秒。insertion\u date中的值将从API中动态提取 目前的代码只检测到一天,我需要的准确性高达第二 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.tim

我想知道插入日期是否早于30天。这将检测到当前时间的分每秒。
insertion\u date
中的值将从API中动态提取

目前的代码只检测到一天,我需要的准确性高达第二

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"
正如你在这里看到的,它精确到秒

问题出在
datetime.today()
中。您应该使用
datetime.now()
而不是
datetime.today()


希望有帮助

你需要做一些类似的事情:

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"

如果您已经在项目中使用了Pandas,那么可以使用Timedelta的详细字符串解析非常干净地完成它。它还与datetime模块完美集成:

import pandas as pd
import datetime

insertion_date = datetime.datetime(2021, 1, 1) # Your datetime here
current_datetime = datetime.datetime.now()

if current_datetime - insertion_date < pd.Timedelta("30 days"):
    print("Inserted less than 30 days ago")
将熊猫作为pd导入
导入日期时间
插入日期=datetime.datetime(2021,1,1)#此处为您的日期时间
current_datetime=datetime.datetime.now()
如果当前日期时间-插入日期

一件好事是,如果需要,您可以轻松地修改它以包括小时、秒等,例如
。。。根据文档,timedelta是一个持续时间,表示两个日期、时间或日期时间实例之间的差异,分辨率为微秒。因此,您有错误。Franco,我请求您重新考虑您的接受。该用户多次被抓到抄袭内容。我很确定这个答案也是从另一个答案中以某种形式剽窃的。单击他们的个人资料并查看。为什么导入了
timedelta
但从未使用过?这是错误的
days
是一个整数,因此它在30天开始后的24小时内给出了不正确的结果。为什么它在24小时内不正确?当第30天开始时,差值不是天=29,小时=吗?第二个例子是错误的
days
是一个整数,因此它在第30天开始后的24小时内给出了不正确的结果
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"
import pandas as pd
import datetime

insertion_date = datetime.datetime(2021, 1, 1) # Your datetime here
current_datetime = datetime.datetime.now()

if current_datetime - insertion_date < pd.Timedelta("30 days"):
    print("Inserted less than 30 days ago")