Jack
Jack

Reputation: 1372

Python: determine current time is not older than 5 minutes

from API I get my latest event time, I want to check if my event time coming from the API is not older than 5 minutes, here is my code

import json
from typing import Optional
import datetime
import time
import requests

def check_event():
    now = datetime.datetime.now()
    old_time = datetime.datetime.now() - datetime.timedelta(minutes=5)
    res = requests.post(URL, data=json.dumps(PAYLOAD), headers=headers)
    available_event = res.json()
    print(available_event[0]['result']['time'])
    event_time = available_lag[0]['result']['time']
    ev2 = datetime.datetime.strptime(event_time,'%Y-%m-%dT%H:%M:%S.%f%z' )
    print(ev2)
    if event_time < old_time:
        print(" old")
    else:
        print("fresh")

from my API time returns in this formate

2022-04-14T07:28:08.000Z

and when I strip the event_time to convert str to datetime, I get following outout

2022-04-14 07:49:27+00:00

and print of the old_time varible format is following

2022-04-14 10:23:08.169712

and when I compare both times, I get following error

TypeError: '<' not supported between instances of 'str' and 'datetime.datetime'

how to fix this?

Upvotes: 0

Views: 3654

Answers (1)

Dmytro Kolupaiev
Dmytro Kolupaiev

Reputation: 151

[Edited]. Yeah, as is stated bellow you can use timezone from datetime module:

from datetime import datetime, timedelta, timezone


def check_event(event_time):
    event_time = datetime.strptime(event_time, '%Y-%m-%dT%H:%M:%S.%f%z')
    return event_time > datetime.now(timezone.utc) - timedelta(minutes=5)


time_from_API = '2022-04-14T07:28:08.000Z'
print(check_event(time_from_API))

Upvotes: 1

Related Questions