了解日期是否超过30天

Fra*_*nco 11 python datetime

我想知道是否insertion_date超过30天.这应该检测到当前时间的分钟和秒.值insertion_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"
Run Code Online (Sandbox Code Playgroud)

小智 12

你需要做类似的事情:

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"
Run Code Online (Sandbox Code Playgroud)

  • 为什么导入了“timedelta”但从未使用过? (5认同)
  • 这是错误的。“days”是一个整数,因此在第 30 天开始后的 24 小时内给出的结果不正确 (2认同)

Jah*_*nov 7

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)
Run Code Online (Sandbox Code Playgroud)

如您在这里看到的,它精确到秒。

问题出在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")
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!