I want to know if insertion_date is older than 30 days. This should detect down to the minute and second of the current time. The value in insertion_date will be dynamically pulled from an API.

Current code only detects up to the day, i need the accuracy to up to the second.

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" 
2

3 Answers

you need to do something on similar lines:

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" 
4
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) 

As you can see here, it is accurate down to seconds.

The problem is in datetime.today(). You should use datetime.now() instead of 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") 

Hope it helps!

1

If you are already using Pandas in you project, you can do it pretty cleanly using the Timedelta's verbose string parsing. It also integrates nicely with datetime module:

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") 

A nice thing is that you can easily modify that to include hours, seconds etc. if needed, for example ... <= pd.Timedelta("30 days 12 hours 30 minutes"). This is not so easy with datetime module.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy