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

时间:2018-10-15 00:37:44

标签: 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)

此脚本可以工作,但是在下一个小时是第二天的开始时不可靠。

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

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

1 个答案:

答案 0 :(得分:3)

在这种情况下,思考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   

replace应该可以将您舍入到下一个小时。