Search code examples
pythondatetimeif-statementtimezonedatetimerangefield

to fetch the data's from website from 00.00 - 7.00AM(EST) IN PYTHON datetimerange using between condition


published_date = 7/11/2019 at 06:04 AM,7/11/2019 at 1:04 AM,7/11/2019 at 5:36 AM,7/11/2019 at 04:00 PM

All times are in EST. I need to fetch data from time range of 00.00 - 07.00 AM(EST).It should skip the time above 7.00AM(EST)

if published_date.time() <= 7:00AM print(published_date.time())

Actual results:

published_date = 7/11/2019 at 06:04 AM,7/11/2019 at 1:04 AM,7/11/2019 at 5:36 AM,7/11/2019 at 04:00 PM

Expected results:

published_date = 7/11/2019 at 06:04 AM,7/11/2019 at 1:04 AM,7/11/2019 at 5:36 AM

Solution

  • Your date are not in correct format. Hence it will not parse and compare it correct. You need to use datetime library to convert the strings into date and compare. Here is the working example:

    from datetime import datetime
    import datetime as dt
    
    datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')
    checkTime = dt.time(7,0,0)
    published_dates = ["7/11/2019 06:04 AM","7/11/2019 1:04 AM","7/11/2019 5:36 AM","7/11/2019 04:00 PM"]
    filtered_dates = []
    for d in published_dates:
      dt1 = datetime.strptime(d, '%d/%m/%Y %I:%M %p')
      if (dt1.time() < checkTime):
          filtered_dates.append(dt1.strftime("%d/%m/%Y %I:%M %p"))
    print('filtered_dates : ', filtered_dates)