Невозможно преобразовать строку в объект datetime в python и выполнить с ним некоторые временные вычисления - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь получить текущую дату и время места с помощью API с python и извлечь из нее дату и время. Код, который у меня есть:

import requests
import json
from datetime import datetime
import time

def get_current_time_from_api():
    response = (requests.get("http://worldtimeapi.org/api/ip")).json()
    return response["datetime"]

the_time = get_current_time_from_api()

Когда я печатаю ответ, используя print(the_time), возвращаемый ответ:

2020-05-06T10:04:51.368291+05:45

Затем я попытался преобразовать строка в datetime, используя функцию datetime.strptime(the_time, "%X), чтобы получить время, я получаю сообщение об ошибке ValueError: time data '2020-05-06T10:09:52.009222+05:45' does not match format '%X' Итак, что пошло не так и как я могу делать такие вещи, когда время анализируется из строки?

if(time == "10:00:00 pm"):
    #do something here
else:
    difference_in_minutes = "10:00:00" - current_time
    time.sleep(difference_in_minutes * 100) #sleeping for that many seconds
    #do stuff when the time is 10 pm

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Думаю, вы ищете метод fromisoformat. Попробуйте это:

import datetime as dt
dt.datetime.fromisoformat(the_time).strftime('%X')

Output:
'21:37:54'
0 голосов
/ 06 мая 2020
from datetime import datetime
from dateutil.relativedelta import relativedelta

datetime_obj = datetime.strptime(
    '2020-05-06T10:04:51.368291+05:45', # your datetime string
    '%Y-%m-%dT%H:%M:%S.%f%z' # format of datetime
)

# this is how you can add a day to date_object
new_date = datetime_obj + relativedelta(days=1)

Это неверно time == "10:00:00 pm" вы должны использовать datetime_objects для сравнения, например:

if new_date > datetime_obj: # this is true.
    # You can do things here
    print("Yes")

# if(time == "10:00:00 pm"), should be done like this:
if datetime_obj.time().hour == 10 and datetime_obj.time().min == 10:
    pass

См. Форматирование datetime: https://docs.python.org/3/library/datetime.html#strftime -and-strptime-format-codes

относительная дельта: https://dateutil.readthedocs.io/en/stable/relativedelta.html

...