我正在尝试做的是使用一个带有python的API来获取一个地方的当前日期时间,并从中提取日期时间。我拥有的代码是:
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.strptime(the_time, "%X)函数将字符串转换为datetime来获取时间,我得到了错误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发布于 2020-05-06 12:48:45
我想您可能正在寻找fromisoformat方法。试试这个:
import datetime as dt
dt.datetime.fromisoformat(the_time).strftime('%X')
Output:
'21:37:54'发布于 2020-05-06 13:10:26
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)这是错误的,你应该使用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有关日期时间格式,请参见:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
relativedelta:https://dateutil.readthedocs.io/en/stable/relativedelta.html
https://stackoverflow.com/questions/61627468
复制相似问题