获取到下一小时开始的秒数

Sco*_*McC 3 python datetime timedelta

  • 我目前使用的 REST API 每小时只允许 1000 次查询
  • 一旦 1000 个查询用完,您就必须等到下一小时开始时才能重置计数器
  • 我的目标是确定我必须等到下一小时开始的秒数
  • 我目前正在使用该time.sleep方法让脚本进入睡眠状态,直到下一小时开始

我已经使用datetime库整理了一个相当粗略的解决方案(添加两分钟以确保安全)

import datetime

# Determine the seconds until the next hour (add 2 minutes to be safe)
now = datetime.datetime.now()
next_hour = datetime.datetime(now.year, now.month, now.day, now.hour + 1, 2)
sleep_seconds = (next_hour - now).seconds

# Put the execution to sleep for a while
print("Sleeping for {0} minutes...".format(sleep_seconds // 60))
time.sleep(sleep_seconds)
Run Code Online (Sandbox Code Playgroud)

此脚本确实有效,但在下一小时是第二天的开始时不可靠。

  • datetime 期望小时值介于 0..23
  • 如果 datetime.datetime.now()方法返回23该方法将失败,如果你传递24datetime对象
  • 如果第二天也跨入下个月或下一年,这也是不可靠的。

有人可以提出一个更好的解决方案来解决这些环绕问题吗?

n8s*_*sty 7

datetime.timedelta在这种情况下,想想会帮助你。像这样的东西:

import datetime

delta = datetime.timedelta(hours=1)
now = datetime.datetime.now()
next_hour = (now + delta).replace(microsecond=0, second=0, minute=2)

wait_seconds = (next_hour - now).seconds   
Run Code Online (Sandbox Code Playgroud)

replace应努力圆你到下一个小时。