【发布时间】:2022-01-21 00:14:59
【问题描述】:
我正在编写一个 python 程序,它不需要在 23:00 到 8:00 之间执行任何操作,具体取决于它使用的代理的时区。
proxy_zone = get_timezone()
proxy_timezone = pytz.timezone(proxy_zone)
proxy_time = datetime.now(proxy_timezone)
now_time = proxy_time.time()
if now_time >= datetime_time(23, 00) or now_time <= datetime_time(8, 00):
future = datetime(proxy_time.year, proxy_time.month, proxy_time.day, 8, 0)
if proxy_time.hour >= 8:
future += timedelta(days=1)
bed_time = (future.astimezone(proxy_timezone) - proxy_time)
sleep(bed_time.total_seconds())
proxy_time 是 6:45,因此 timedelta (future.astimezone(proxy_timezone) - proxy_time) 返回的时间应该是 1 小时 45 分钟。
但我得到的时间增量为 -1 天零 4 个半小时。
【问题讨论】:
-
我认为您应该将
localizefuture转换为时区,而不是使用astimezone转换它。那将是上面代码中的future.localize(proxy_timezone)。
标签: python datetime time timedelta pytz