Joshua Boyd
Joshua Boyd

Reputation: 343

conditional python; Time format newer than 30 minutes

I have a variable that has a stored created date as:

2022-09-01T19:40:17.268980742Z

In python, if i wanted to look at that time and say if 'created' is within than the last 30 minutes, do X.

EDIT I have another command I can use (working within Palo XSOAR), that will give me the current date time in ISO.

So really want I'm trying to do is say:

if created is within the last 30 minutes:
   do X

Assume I have to capture current time as ISO variable (can do) Set a variable less than 30 minutes of the current time (not sure) then if create time is between those two values do X (not sure)

Any help is appreciated -

Thanks,

Upvotes: -1

Views: 51

Answers (1)

lummers
lummers

Reputation: 779

You can use datetime.now() to get the current datetime. We can then coerce your datetime string into a datetime object, too. Then, we can look at the difference and apply some logic.

import datetime 

some_string = '2022-09-01T19:40:17.268980742Z'
some_string = some_string.split('.')[0]
timestamp = datetime.datetime.fromisoformat(some_string)

current_time = datetime.datetime.now()

if (current_time - timestamp) < timedelta(minutes=30):
    print('x')

else:
    print('y')

Here are how the variables look:

>>> print(timestamp)
datetime.datetime(2022, 9, 1, 19, 40, 17)

>>> print(current_time)
datetime.datetime(2022, 9, 5, 4, 26, 14, 345147)

>>> print(current_time - timestamp)
datetime.timedelta(days=3, seconds=31557, microseconds=345147)

Note, I wasn't able to convert the provided timestamp of 2022-09-01T19:40:17.268980742Z to a datetime object using the fromisoformat. Trimming down the microseconds six decimal places worked fine, but seven throws an error. This is expected for datetime objects as the permissable resolution is Between 0 and 999999 inclusive (src: https://docs.python.org/3/library/datetime.html).

This is why I split the string.

Works:

some_string = '2022-09-01T19:40:17.268980'
timestamp = datetime.datetime.fromisoformat(some_string)

Error:

some_string = '2022-09-01T19:40:17.2689801'
timestamp = datetime.datetime.fromisoformat(some_string)

Upvotes: 1

Related Questions