我正在连接到一个返回文章列表的 API,每篇文章都有 created_at 和 modified_at 属性。我想返回每篇文章的created_at 和modified_at 时间之间的差异(以小时为单位)。
我尝试了此操作,但在检查时,之间的时间值不正确。我认为这是因为我不是在这里查看每篇文章,而是查看类别。
首先我得到了每篇文章的创建日期,这些值是正确的:
from datetime import datetime
rArticles = requests.get("https://....", auth = (apiKey, password))
responseArticles = rArticles.json()
dateCreated = []
for art in responseArticles["articles"]:
dateCreated.append(art["created_at"])
for ts in dateCreated:
datetimeObjectCreated = datetime.strptime(ts,'%Y-%m-%dT%H:%M:%SZ')
然后我得到了每篇文章的修改日期,这些值似乎也是正确的,如果文章没有被修改,则可能值得注意,日期将与创建的日期相同:
dateModified = []
for art2 in responseArticles["articles"]:
dateModified.append(art2["modified_at"])
for ts2 in dateModified:
datetimeObjectModified = datetime.strptime(ts2,'%Y-%m-%dT%H:%M:%SZ')
尝试获取以下日期之间的日期:
timeBetween = datetimeObjectModified - datetimeObjectCreated
这是不正确的,例如,当查看第四个向下时,2020-08-06 和 2020-08-06 之间的时间不是 1213 天。
我也尝试过这个方法:
for time in datetimeObjectCreated:
timeBetween = datetimeObjectModified - datetimeObjectCreated
谢谢你
除非我漏掉了你的意图,否则你只是想要
from datetime import datetime
for art in responseArticles["articles"]:
ctime = datetime.strptime(art["created_at"], "%Y-%m-%dT%H:%M:%SZ")
mtime = datetime.strptime(art["modified_at"], "%Y-%m-%dT%H:%M:%SZ")
mod_hours = (mtime - ctime).total_seconds() / 3600
print(f"{ctime=}, {mtime=}, {mod_hours=}")
如果不是所有文章都有修改时间等,您需要使用合适的
if art.get("modified_at")
进行修改。